YiiでPHPUnitでJenkinsで

Yii のプロジェクトで書いた PHPUnit のテストコードを、Jenkins で回したい場合の設定内容について覚書。
そんなニッチな需要がどこまであるか知らないが...

本当は、phpunit.xml は 1 つで、phpunit 実行時のコマンドだけで切り分けたかったのだが、
調べた感じだと xml を分ける以外に方法が分からなかったので、この方法法となっている。
もしかしたら、もっとスマートな方法があるかもしれない...ぐぬぬ

PHPUnit

純粋にテストの件数やテスト結果だけを確認したい場合は、この設定を用いた方が良い。
なぜなら、後述するカバレッジ計測まで行うと、べら棒に実行時間が掛かるからである。
Java であれば、カバレッジ計測したとしてもここまで遅くはならないと思うのだが..)

使用した phpunit_only.xmlコチラ

Windows バッチコマンドの実行

cd protected\tests
phpunit --configuration phpunit_only.xml --log-junit junit.xml

JUnit テスト結果の集計

テスト結果XML に「protected/tests/junit.xml」を入力


PHPUnitカバレッジ計測

上記の PHPUnit 実行に加えて、カバレッジ計測も行いたい場合は、この設定。
上記のように --configuration のオプションを指定しなかった場合、カレントディレクトリにある「phpunit.xml」という名前のファイルが自動的に使われる。

ちなみに、PHPUnit の実行結果からカバレッジを出したい場合、「Jenkins Clover PHP plugin」というプラグインを Jenkins に入れる必要があるのでご注意を。

使用した phpunit.xmlコチラ

Windowsバッチコマンドの実行

cd protected\tests
phpunit --log-junit junit.xml --coverage-clover clover.xml

Clover PHP カバレッジレポートを集計

・Clover XMLパス
protected/tests/clover.xml

・「Clover HTMLレポートを公開する」にチェック
・Clover HTML レポート ディレクト
protected/tests/report

JUnit テスト結果の集計

テスト結果XML に「protected/tests/junit.xml」を入力


追伸

なんで PHPUnit では、テスト失敗時にあそこまで時間が掛かるのでしょうかね。
成功する場合は 1 秒ほどで終わるテストも、失敗すると 10 秒では終わらないくらい時間が掛かる。
これって PHPUnit あるあるですかね〜。