2012年3月27日火曜日

Google Test を使ってみる - その6(Jenkins との連携、スキップ対応)

これまでテストのことばっかり書いてきましたが、ここで突然 Jenkins の登場です。
Jenkins については、Wiki でも見てください。
そして、「Google Test を使ってみる」シリーズは今回で終了したいと思います。
(基本的にマニュアルに書いてあることばかりですし、そろそろネタ切れです。)

しかも、今回も Jenkins で Google Test の結果を収集しましょうという「ありがちな内容」です。
が、最後までお付き合いいただけましたら、幸いです。

※ Google Test 関係の記事一覧はこちら
プロジェクト設定
まずは、テスト結果を Windows バッチジョブから作っていきたいと思います。
テストプログラムと出力ファイルは適当です。
test.exe --gtest_output=xml:test_result.xml

つづいて、Jenkins のプロジェクト設定にて「JUnitテスト結果の集計」にチェックをいれます。
「テスト結果XML」には先程指定した xml のパスを入力します。


以上で設定完了です。実行してみると、テスト結果のリンクができます。
これを開くと、右のようなテストの結果を閲覧できます。リンクをたどっていくとテスト毎の結果を見れます。

また、テスト履歴をクリックするとテストの推移が確認できます。
1つのテスト結果を開いた状態でテスト履歴をクリックすると、そのテストだけの履歴をみることもできます。

スキップの対応
ここが今回のメインディッシュです。

Jenkins で集計されるテストの結果は、成功・失敗の他に スキップ があります。

Google Test でフィルターなどによりテストが実行されなかったものは、"notrun" として XML に出力されるのですが、これが「スキップ」ではなく「成功」として収集されてしまいます。
これをスキップとして Jenkins に集計させたいと思います。

Jenkins でスキップとして判断されるようにするには、<skipped> ノードが必要になるので、Google Test のソースを変更します。
gtest.cc の 3261 行目(XmlUnitTestResultPrinter::OutputXmlTestInfo 関数の if (failures == 0) の手前)に
以下のコードを追加してください。2012/03/30 追記: Google Test 1.6.0 です。
if( !test_info.should_run() && failures == 0 ) {
    *stream << ">\n      <skipped />\n    </testcase>\n";
    return;
  }
あとは、普通にビルドするだけです。

すると結果がこのように表示されます。

スキップされたテストが黄色で表示されるようになりましたね。

まとめ
さて、今回で「Google Test を使ってみる」シリーズはおしまいです。
と、いっても今後も Google Test 絡みのことは書いていくと思います。

実はもう次の記事の下書きは書いてたりしますが(^^

0 件のコメント:

コメントを投稿