PerlのテストコードをJenkinsで動かす


社内で使用している主な言語がPerlということもあり、せっかく社内にJenkinsを導入したので、Perlのテストコードも管理できないかと設定した時のログです。

広告

Perlのテストコード

テストコード自体は下記のような構造でTest::Moreを使ったシンプルなものを使用します。

[Project]/
  ...
  t/
    sub/
      test_sub1.t
    test1.t
    test2.t
    test3.t

テスト自体も下記のような簡単なものをとりあえず使用します。

use Test::More tests => 3;
 
is 1, 1;
ok 2 == 2;
isnt 2, 1;

JUnit互換のテストスイート生成

JenkinsでPerlのテストコード結果を集計するのにJUnitで使用されているXMLを使用します。

Test::Moreをインストールした時に付いてくるproveコマンドを使用します。コマンド時にフォーマットモジュールを指定するようになっていますが、今回はJUnit互換のものを生成するので、TAP::Formatter:JUnitというフォーマッターを使用します。JUnit以外のフォーマッターについてはこちらを参照ください。

で、実際にテストコードからJUnit互換のテストスイートを作成するには、下記のようなコマンドになります。

cd [Project]
prove --formatter=TAP::Formatter::JUnit -l t > test_results.xml

実際に生成されるファイルはこんな感じです。

<testsuites>
  <testsuite failures="0"
             errors="0"
             tests="3"
             name="sub_test_sub1_t">
    <testcase name="1"></testcase>
    <testcase name="2"></testcase>
    <testcase name="3"></testcase>
    <system -out>< ![CDATA[1..3
ok 1
ok 2
ok 3
]]></system>
    <system -err></system>
  </testsuite>
  <testsuite failures="0" errors="0" tests="3" name="test1_t">
    <testcase name="1"></testcase>
    <testcase name="2"></testcase>
    <testcase name="3"></testcase>
    <system -out>< ![CDATA[1..3
ok 1
ok 2
ok 3
]]></system>
    <system -err></system>
  </testsuite>
  <testsuite failures="0" errors="0" tests="3" name="test2_t">
    <testcase name="1"></testcase>
    <testcase name="2"></testcase>
    <testcase name="3"></testcase>
    <system -out>< ![CDATA[1..3
ok 1
ok 2
ok 3
]]></system>
    <system -err></system>
  </testsuite>
  <testsuite failures="0" errors="0" tests="4" name="test3_t">
    <testcase name="1"></testcase>
    <testcase name="2"></testcase>
    <testcase name="3"></testcase>
    <testcase name="4"></testcase>
    <system -out>< ![CDATA[1..4
ok 1
ok 2
ok 3
ok 4
]]></system>
    <system -err></system>
  </testsuite>
</testsuites>

Jenkins側の設定

Jenkins側でのビルド周りの設定です。これで、基本的な設定は完了しているので、svnやgitのリポジトリ設定をすれば動作すると思います。

スクリーンショット 2012-02-08 8.58.38

テスト結果も通常通りグラフで見れます。

スクリーンショット 2012-02-08 9.03.53

関連記事