CicleCIでテスト結果が見づらい問題
テストの数がだんだん増えてくると、どのテストでFAILしたのかが分かりづらくなります。1,000を超えるテストの結果ログから、「FAIL」の文字列を検索して探すでも良いですが、10も20もFAILした場合は、どこでFAILしたかを特定するだけで結構大変です。
JUnit形式でテストレポートを出力する
go-junit-reportというツールを使うことで、go testの結果をJUnit実行結果のXMLフォーマットで出力することができます。
.circleci/config.yml
のテスト実行するjobに以下を書いていきます。
# テスト結果を保存するディレクトリを作成
- run: mkdir -p /tmp/test-results
# テスト結果をレポート出力するためのライブラリを取得
- run: go get -u github.com/jstemmer/go-junit-report
# テスト実行とレポート出力
- run: go test -v -race ./... 2>&1 | go-junit-report -set-exit-code=true > /tmp/test-results/go-test-report.xml
# 出力したレポートをCircleCIにテスト結果として保存
- store_test_results:
path: /tmp/test-results
set-exit-code
というオプションをtrueにしないと、テストがFAILしてもexit 0
が返り、正常終了してしまいます。(set-exit-code
のデフォルト値はfalse)
今回、go testの結果が1つでもエラーになった場合は、job自体もエラーにしたいため、-set-exit-code=true
を指定しています。
参考