はじめに
以下記事の【phpunitを少し使ってみる】までは行っている前提で話します。
最終的表示までのものgithubにあげているのでもしよかったら見てください。
どこに何を書けばいいかもここのファイル等見てもらった方が早いかもです。
最終的な見た目は以下のような感じです。
上記の【phpunitさわるまで】以降にすること箇条書き
※HTMLでコードカバレッジを表示するのに必要な設定
- 【step1】 tokenizer(拡張モジュール)追加
- 【step2】 Xdebug(拡張モジュール)追加
- 【step3】 php.iniの設定、反映(Xdebug(拡張モジュール)有効化)
- 【step4】 phpunit.xml(コードカバレッジ出力のための設定ファイル的なもの)の作成
- 【step5】 メソッドの修正
- 【step6】 最後に出力コマンド
【step1】 tokenizer(拡張モジュール)追加
Dockerfileに以下追記
※ですがもしかしたらこれいらないかもしれないです、、すでに入ってる的なログ出てた気がするので念のため書いておきます、、
RUN docker-php-ext-install tokenizer
【step2】 Xdebug(拡張モジュール)追加
Dockerfileに以下追記。すでに記述してある処理はそのままで。
ちなみに『apt-get』使用でインストール出来なかったのでこのインストールの方法で行っています。
peclのインストールがwget
インストールしたpeclでxdebugをインストールするという感じです。
インストール方法は以下の記述参考
https://pear.php.net/manual/en/installation.getting.php
peclでインストールできるもの以下
https://pecl.php.net/package-stats.php
RUN apt-get update \
&& apt-get install -y \
wget
# コードジェネレーターで必要
RUN pecl install xdebug
【step3】 php.iniの設定、反映(Xdebug(拡張モジュール)有効化)
xdebug使えるようにするためphp.iniを自分で作成してDockerの環境に反映するをしました。
ちなみにextension=xdebug.so
の記述書け!は以下リンク先に書かれていたもので
http://xdebug.org/docs/install
xdebug.mode=coverage
の記述書け!は失敗ログで言われたものです。
Warning: XDEBUG_MODE=coverage or xdebug.mode=coverage has to be set
Dockerfileに以下追記
COPY html/php.ini /usr/local/etc/php/conf.d
php.iniを以下場所に作成
extension=xdebug.so
xdebug.mode=coverage
【step4】 phpunit.xml(コードカバレッジ出力のための設定ファイル的なもの)の作成
『docker-compose.yml』ある場所で$ docker-compose up --build -d
を叩きます。
以下コマンド今使用しているコンテナIDの確認を行う
$ docker ps
コンテナ内に以下コマンドで入る、 ※『1999d283b4f9』は上記で出力したコンテナIDを使用してください
$ docker exec -i -t 1999d283b4f9 bash
phpunit.xmlの作成コマンドを打つ、そして聞かれた内容に答えていく
$ vendor/bin/phpunit --generate-configuration
【step5】 メソッドの修正
テストメソッド上の何のテストをするかを記述(@covers
の部分)
これないとThis test does not have a @covers annotation but is expected to have one
と言われます。
/**
* @covers sample\Sample::a
**/
public function testA()
全体
https://github.com/sachiko-kame/samplePHPTest/blob/main/html/TEST/SampleTest.php
【step6】 最後に出力コマンド
これで『TestResult』フォルダ内に無事index.htm等々作成出来て表示に問題がなければOKです!
うまくいかない場合『phpunit.xml』が同じでない可能性が高いと思うので以下と見合わせていただければと思います。
https://github.com/sachiko-kame/samplePHPTest/blob/main/html/phpunit.xml
$ vendor/bin/phpunit --coverage-html TestResult
参考
https://tech-blog.rakus.co.jp/entry/20200908/docker
https://docs.docker.jp/engine/reference/builder.html#copy
その他所々にリンク貼ってます!