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
をインストールする。

続けて、プロジェクトに前述のコマンドを設定する。

  1. プロジェクト(例:hoge)のトップページから「設定」をクリック。
  2. 「ビルド」>「ビルド手順の追加」>「シェルの実行」をクリック。
    以下を設定する。
cd ${WORKSPACE}/app
mkdir -p results
../lib/Cake/Console/cake testsuite --log-junit results/phpunit.xml --coverage-clover results/coverage.xml app AllTests
  1. 「ビルド後の処理」>「Clover PHP カバレッジレポートを集計」をクリック。
    「Clover XMLパス」に app/results/coverage.xml を指定する。
  2. 同様に「JUnitテスト結果の集計」をクリック。
    「テスト結果XML」に app/results/phpunit.xml を指定する。

あとはビルドするだけ。エラーが発生してしまったら「コンソール出力」
を見ると、原因が大体分かります。

参考 URL:
Fatal error: Class ‘DOMDocument’ not foundと出たら: PHPの種 ブログ