CakePHP2 から、奨励単体テストツールが SimpleTest から PHPUnit になっ
たのは周知のとおり。http://example.com/cakephp/test.php などから単
体テストができるようになり、カバレッジ率も測定できる環境が整ったら、
Jenkins でも実行したいところ。
コマンドラインから単体テストを実行する
まずはコマンドラインからテストを実行できることを確認する。
% cd app
% mkdir -p results
% ../lib/Cake/Console/cake testsuite --log-junit results/phpunit.xml --coverage-clover results/coverage.xml app AllTests
上の例では、Controller や Model を含めた全てのテストケースを実行す
る app/Test/Case/AllTestsTest.php を実行している。
このとき
PHP Fatal error: Class ‘DOMDocument’ not found in /usr/share/pear/PHPUnit/Util/Log/JUnit.php on line 135
なんていうエラーが起きたら、configure で –with-dom を有効にした
PHP がインストールされていない 。remi リポジトリからインストールする
と良い(詳細は割愛)。
% sudo yum --enablerepo=remi,epel,rpmforge,rpmforge-extras,rpmforge-testing install php-xml
ここまで出来たらあとは簡単。Jenkins に設定するだけ。
Jenkins側の設定
トップの「Jenkinsの管理」>「プラグインの管理」から、
results/coverage.xml を解析するためのプラグイン、Clover PHP Plugin
をインストールする。
続けて、プロジェクトに前述のコマンドを設定する。
- プロジェクト(例:hoge)のトップページから「設定」をクリック。
- 「ビルド」>「ビルド手順の追加」>「シェルの実行」をクリック。
以下を設定する。
cd ${WORKSPACE}/app
mkdir -p results
../lib/Cake/Console/cake testsuite --log-junit results/phpunit.xml --coverage-clover results/coverage.xml app AllTests
- 「ビルド後の処理」>「Clover PHP カバレッジレポートを集計」をクリック。
「Clover XMLパス」に app/results/coverage.xml を指定する。 - 同様に「JUnitテスト結果の集計」をクリック。
「テスト結果XML」に app/results/phpunit.xml を指定する。
あとはビルドするだけ。エラーが発生してしまったら「コンソール出力」
を見ると、原因が大体分かります。
参考 URL:
Fatal error: Class ‘DOMDocument’ not foundと出たら: PHPの種 ブログ