はじめに
PHPUnitとは、
単体テストを効率よく書くためのテスティングフレームワーク(ツール)
PHPUnit マニュアル
PHPUnitをdockerコンテナで動かす
使用するファイルは、
phpunit
を使用します。
・PHPUnitコンテナをビルドする
Dockerfileがあるディレクトリで
docker build . -t [好きなリポジトリ名]:[好きなversion]
・ユニットテストを実行する
phpunit.xmlがあるディレクトリで
docker run \
-v $(pwd):/app \
-v $(pwd)/php.ini:/etc/php7/php.ini \
-v $(pwd)/[wordpressまでのパス]:/html \
--link [databaseコンテナ名]:[ホスト名] \
--net [ネットワーク名] \
--rm \
[リポジトリ名]:[version] tests
上記でコンテナを立ち上げて、
dockerで立ち上がっているプロジェクトに対してテストを行うことができます。
docker run の各箇所解説
ホストのディレクトリをphpunitコンテナのメインディレクトリにマウントしてます。
-v $(pwd):/app
php.iniをマウントしてます。
-v $(pwd)/php.ini:/etc/php7/php.ini
wordpressのソースをマウントしてます。
-v $(pwd)/[wordpressまでのパス]:/html
databaseコンテナにリンクを貼ってます。
ホスト名はwebコンテナで使用しているdatabaseコンテナと同名にする必要があります。
--link [databaseコンテナ名]:[ホスト名]
ネットワークにコンテナを接続します。
--net [ネットワーク名]
docker-composeで立ち上げたコンテナと、docker runで立ち上げるコンテナはネットワークが違うので
run時にdocker-composeで使用しているネットワーク名を明示してあげる必要があります。
ネットワーク名が以下コマンドで調べられます。
docker network ls
コンテナとして起動するイメージを指定。--rmつけると動作終わったらそのコンテナが削除されます。
--rm [リポジトリ名]:[version]
phpunit.phpが読み込まれてユニットテストが走ります。
phpunit
さいごに
webコンテナに直接PHPUnitを入れられない理由がある場合などの時に、
使用するとすごく便利です。