はじめに

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を入れられない理由がある場合などの時に、
使用するとすごく便利です。

この記事をシェアする:
東日本橋の制作・開発会社 プレスマンのスタッフブログ