LoginSignup
9
5

More than 5 years have passed since last update.

Goのテスト結果をCIでちょっと詳しく表示する

Last updated at Posted at 2018-03-19

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)としても残しておきましょう。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5