ひでメモ

プログラムについて勉強したことを書きます。たぶん。

【PHPUnit】php artisan test --parallel するときに設定ファイルを指定する

現在のプロジェクトでは CI でテストのジョブを分散させるために PHPUnit の設定ファイル(デフォルトだと phpunit.xml )が複数あります。
そのため、以下のようなことを同時にやりたい場合が発生します。

以下のようなコマンドになるかなと思って実行すると (--configurationは設定ファイルを指定するオプション)

$ php artisan test --parallel --configuration ./phpunit-2.xml 

怒られてしまいました…

...
In CoverageMerger.php line 59:
                                                                                                                                                                           
  Coverage file /private/var/folders/tf/v66b2v0n7lv8gt8plbf7dnzc0000gn/T/CV_BOSyno is empty. No coverage driver found! Enable one of Xdebug, PHPDBG or PCOV for coverage.  

エラーとしてカバレッジファイルがどうのこうのと怒られているのですが、今はテストさえ流せればいいのでオプションで除外します。

--parallelオプションを付けると、実態はParatestが実行されるようですので--no-coverageカバレッジを取得しないように指定してやると無事に実行できました。

php artisan test --parallel --configuration ./phpunit-3.xml --no-coverage 

追記

設定ファイルphpunit.xmlに以下のような記述があるとカバレッジを出力しようとしてくれるようです。
これをコメントアウトすることでも--no-coverageオプションは不要になりました。

    <logging>
        <log type="coverage-html" target="./report"
            lowUpperBound="50" highLowerBound="80" />
    </logging>

余談

設定ファイルを指定するオプションを調べていて気づいてしまったのですが、XML 設定ファイルで対象とするディレクトリをグループ分けができそうでした。

phpunit.readthedocs.io

つまり、テスト実行時のオプションでそれぞれのグループを指定して実行という形にすれば CI でジョブも分けられて、ファイルはひとつにまとめるということができそう…!