テスト文化を作るためには、自分の書いたコードのどこがテストされているのかを明示するのも意味があります。人は「ここがテストされていないよ」と言われたら、テストしたいと考えるものだからです。知らんけど。
誰もが見える場所にカバレッジなどの数値を示し、自分の正負両面の貢献を表すべきです。たぶん。
Test Coverage Visualization
テストカバレッジは、数値でも表現できますが、どこがカバーされているかという形でも表現できます。 具体的なイメージは以下です1。
実現方法
上記の機能はCoberturaのレポートを使用して実現されます。 このため、GolangでもCoberturaのカバレッジレポートを生成しなければなりません。 それを実現するのがgocover-coberturaです。
gocover-coberturaを利用すると、Golangのカバレッジ情報を以下のようにしてCoberturaのレポートへ変換できます。
$ go test -coverpkg=./... -coverprofile=coverage.out ./... $ gocover-cobertura < coverage.out > coverage.xml
あとは、このレポートを.gitlab-ci.yml
上でartifacts:reports:coberturaとして指定すれば良い。
ぼくたちは、おおよそ以下のような形で実行しています。
stages: - test variables: GOLANG_VERSION: 1.15.7 test: stage: test image: golang:${GOLANG_VERSION} before_script: - make devel-deps script: - make coverage artifacts: reports: cobertura: coverage.xml
これでMerge Requestのファイル差分で、どこをテストし、どこをテストしていないのかが一目瞭然になります。