CONTENTS
なにがしたいのか
- 複数のパッケージで開発している
- テストが含まれないパッケージもある
- テストが含まれていないパッケージも含めてカバレッジを計測したい
カバレッジを計測する
golang でカバレッジを計測するには、以下のコマンドを使用すればいい。
go test ./... -cover
このコマンドではカバレッジを表示して終了する。 カバレッジのレポートが欲しいので、以下のようにプロフィールを出力するようにする。
go test ./... -coverprofile=cover.out
このプロフィールを使用して html を生成できる。
go tool cover -html=cover.out -o cover.html
これで見やすい形式のカバレッジレポートを見られる。
カバレッジを取るパッケージを指定する
ここまでは普通にドキュメントに書いてあるのでつまづくところはなかった。 しかし上記の方法では、カバレッジのレポートがテストを書いてあるパッケージしか出なかった。
そこで、以下のようにカバレッジをレポートするパッケージを指定する必要がある。
go test ./... -coverprofile=cover.out -coverpkg=./...
cover コマンドのドキュメントを見たところ、シンプルに go help testflag
を確認してみろ、と書いてあった。
go help testflag
を確認してみると、以下のような箇所が見つかった。
-coverpkg pattern1,pattern2,pattern3 Apply coverage analysis in each test to packages matching the patterns. The default is for each test to analyze only the package being tested. See 'go help packages' for a description of package patterns. Sets -cover.
-coverpkg
に、カバレッジをレポートするパッケージを指定すればいいらしい。
デフォルトでは、テストが書いてあるパッケージのみ、レポートするようになっているようだ。
関連するすべてのパッケージのカバレッジを計測したいので、この記事では ./...
を指定してある。
まとめ
複数のパッケージのレポートを生成する方法がすんなり見つからなかったのでまとめておいた。