HudsonでPHPメモ (1) PHPUnitとカバレッジ

準備

build.xmlの作成

<?xml version="1.0" encoding="utf-8" ?>
<project name="StringUtil" basedir="." default="test">

    <target name="clean">
        <delete dir="reports" includeemptydirs="true" />
    </target>
 
    <target name="test" depends="clean">
        <mkdir dir="reports/coverage" />
        <exec dir="."
              command="phpunit --log-junit 'reports/unitreport.xml' // (1) XML形式のテスト結果レポート
                               --coverage-html 'reports/coverage' // (2) カバレッジのHTML形式レポート
                               --coverage-clover 'reports/coverage/coverage.xml' // (3) カバレッジのClover形式
                               test/*Test.php" // テストクラス
        />
    </target>
</project>

なんで、Phing使っておいてexecでコマンド実行してるかというと、phpunitタスクではClover形式のカバレッジを生成することができないから、しかたくなくphpunitを叩いてる。CoverageReportTタスクを使えばHTML形式で出せるけど、Hudsonのプロジェクト画面に推移グラフを表示できないため。なんかいけてないぞ! Phing。ダメな子だこの子は。

Hudsonのプロジェクト設定

Phingの設定

Phingプラグインは、ワークスペース/モジュールルート/build.xmlをデフォルトで使用する。それ以外のところにある場合は、ビルドファイルを指定する。


xUnit Pluginの設定

(1)のファイルを指定する。


Clover Pluginの設定

(3)のファイルのディレクトリとファイル名を指定する。ディレクトリはワークスペースからの相対パスで指定する。リポジトリからのチェックアウト時にローカルモジュールディレクトリに"phpsample"を指定しているので、ファイルはphpsample/reports/coverage.xmlになる。


実行結果

テスト結果

プロジェクトの画面に、JUnitと同様にテスト結果の推移グラフが表示される。

グラフをクリックすると、各テストメソッドについて情報が表示される。


カバレッジ

プロジェクトの画面に、カバレッジの概要と推移グラフが表示される。

推移グラフをクリックすると、詳細がドリルダウンで表示される。


まとめ

Phingはもう少しがんばりが必要かも。でも他のPHPがらみのレポートツールって標準出力に出すだけとか、Junit形式のようなものとか、いろいろやる気を失せさせるパワーを持ってるのが多いような気がする。