HudsonでPerlプロジェクトのCI - テスト結果の可視化

テストが成功するか否かだけを知りたい場合には、以前に書いたエントリでも良いのですが、CIをするのであれば、「どのテストが失敗したのか」、「どのビルドでどのテストが失敗したのか」というのかを、CI環境上で当然知りたくなるのではないかと思います。

「テスト結果の集計」という機能がHudsonにはあるので、それを使うことで上記の機能が実現できます。集計結果などがどのように表示されるかは、川口さんの以下の記事をみるとわかります。
http://gihyo.jp/dev/feature/01/hudson/0002?page=4

以下では、perlのプロジェクトでどのようにそれを実現するかを説明します。

ビルドの設定

プロジェクトの設定の「シェルの実行」のところに、以下のように追記します。

prove -lv --harness TAP::Harness::JUnit

これでTAP::Harnessの代わりに、TAP::Harness::JUnitが使われて、JUnitXML形式のテスト結果のファイルで出力されます。

Hudsonは元々Java用のCIツールとして作られているので、デフォルトでJUnitXML形式の出力をグラフ表示する機能が組み込まれているため、それを使うようにするというわけです。

ビルド後の処理

プロジェクトのビルド後の処理の設定の、「JUnitテスト結果の集約」をクリックして、テスト結果XMLの欄に、junit_output.xmlを追加します。

これは、TAP::Harness::JUnitがデフォルトで生成するXMLファイルで、このファイルを使ってHudsonのJUnitテスト結果の集約を実現します。

まとめ

TAP::Harness::JUnitJUnit形式のXMLファイルに変換し、Hudsonのテスト結果の集約機能を使うことで、テスト結果を可視化しました。

これで、Perlのプロジェクトで、リグレッションの発生を可視化することができ、複数人のプロジェクトでも開発がしやすくなるのではないかと思います。

Hudsonは、Javaに限らずに使うことのできるよくできたCIツールなので、CIツールの候補として選んでみてはいかがでしょうか。