げっとシステムログ

WEB開発メモ

golang で test カバレッジを計測する

CONTENTS
  1. なにがしたいのか
  2. カバレッジを計測する
  3. カバレッジを取るパッケージを指定する
  4. まとめ
  5. 参考資料

なにがしたいのか

  • 複数のパッケージで開発している
  • テストが含まれないパッケージもある
  • テストが含まれていないパッケージも含めてカバレッジを計測したい

TOP

カバレッジを計測する

golang でカバレッジを計測するには、以下のコマンドを使用すればいい。

go test ./... -cover

このコマンドではカバレッジを表示して終了する。 カバレッジのレポートが欲しいので、以下のようにプロフィールを出力するようにする。

go test ./... -coverprofile=cover.out

このプロフィールを使用して html を生成できる。

go tool cover -html=cover.out -o cover.html

これで見やすい形式のカバレッジレポートを見られる。

TOP

カバレッジを取るパッケージを指定する

ここまでは普通にドキュメントに書いてあるのでつまづくところはなかった。 しかし上記の方法では、カバレッジのレポートがテストを書いてあるパッケージしか出なかった。

そこで、以下のようにカバレッジをレポートするパッケージを指定する必要がある。

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 に、カバレッジをレポートするパッケージを指定すればいいらしい。 デフォルトでは、テストが書いてあるパッケージのみ、レポートするようになっているようだ。

関連するすべてのパッケージのカバレッジを計測したいので、この記事では ./... を指定してある。

TOP

まとめ

複数のパッケージのレポートを生成する方法がすんなり見つからなかったのでまとめておいた。

TOP

参考資料

TOP