社内で使用している主な言語が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のリポジトリ設定をすれば動作すると思います。
テスト結果も通常通りグラフで見れます。