1. ホーム
  2. unit-testing

[解決済み] Goでテストカバレッジを測定する方法

2022-04-26 22:17:43

質問

Goのユニットテストのコードカバレッジを生成することに成功された方はいらっしゃいますか?ウェブ上でそのためのツールを見つけることができません。

どのように解決するのですか?

注意点 Go 1.2 (2013年第4四半期、rc1が利用可能) が表示されるようになりました。 テストカバレッジ結果 :

の大きな新機能の1つは go test というのは を計算し、別途インストールされた新しい " の助けを借りることができるようになりました。 go tool cover プログラムによるテストカバレッジ結果の表示 .

cover ツールは go.tools サブリポジトリ . を実行することでインストールすることができます。

$ go get golang.org/x/tools/cmd/cover

カバーツールは2つのことを行います。

  • まず、"のとき。 go test "が与えられます。 -cover フラグを立てると、パッケージのソースを書き換えて、インスツルメンテーション文を挿入するために自動的に実行されます。その後、テストは通常通りコンパイルされ、実行され、基本的なカバレッジの統計が報告されます。

    $ go test -coverprofile fmtcoverage.html fmt ok fmt 0.060s カバレッジ:91.4% のステートメント $

  • 次に、より詳細なレポートを作成するために、"go test" に異なるフラグを指定すると、カバレッジ・プロファイルが作成され、cover プログラムが " で呼び出されます。 go tool cover その後、解析することができます。

フランク・シアー 言及 :

Goの最新バージョン(2013/09/19)では、使用されています。

go test -coverprofile <filename> <package name>

カバレッジ統計の生成・解析方法の詳細は、コマンドを実行することで確認できます。

$ go help testflag
$ go tool cover -help


アイバンブラック 記載事項 コメントで :

go test -coverprofile cover.out そして

go tool cover -html=cover.out が開く cover.out デフォルトのブラウザで

ブラウザが開くのを待つのも嫌なので、こんなエイリアスを定義してみました。

alias gc=grep -v -e " 1$" cover.out

と打つだけであること gc そして、すべての行のリストが表示されます。 ない は、まだカバーされていない(ここでは coverage.out ライン ではなく は"で終わります。 1 ")。