Goのテスト結果をCIでちょっと詳しく表示する
よそのプロジェクトの .circleci/config.yml
をのぞいていたら、どうやらJUnit形式のテスト結果をCircle CIで対応していることがわかったので書きます。
JUnitのxml形式
テストのカバレッジ結果はなかなか言語ごとの事情があるのでプログラミング言語ごとはあるにしてもそれをまたいだ標準化がなされていないんです。
ただ、テスト結果(成否やかかった時間)はJUnitのxml形式が一般的に使われている傾向があり、CIツールなどでは大体対応しています。
わたしが確認した範囲だと、Circle CIとJenkinsでは対応しています。
JUnitというツールから分かる通り、元はJavaのユニットテストフレームワークから使われ出したものなのでJavaのツールなどは大体対応している気がします。
GoでのJUnit形式出力
go-junit-reportというコマンドラインツールを利用すると出力できます。
使い方は
go get -u github.com/jstemmer/go-junit-report
でインストールして
go test -v 2>&1 | go-junit-report > report.xml
で report.xml
にJUnit形式のテスト結果が出力されます。
個人的な好みだと tee
コマンドなどで、標準出力などにも出力しつつやるのがおすすめです。
ちなみに、 go test
コマンドに -v
を指定するとテストケース名・結果・所要時間も出力されるのでgo-junit-reportはそれを利用してxmlを出力しているようです。
Circle CIでテスト結果を取り込んで表示する
steps
の中で store_test_results
を使って取り込みます。
後々、統計を取りたい場合などのために、成果物(artifacts)としても残しておきましょう。