157

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

4

13 に答える 13

179

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% $

  • 第 2 に、より詳細なレポートの場合、「go test」のさまざまなフラグを使用してカバレッジ プロファイル ファイルを作成できます。このファイルは、「go tool cover」で呼び出されたカバー プログラムで分析できます。

Frank Shearar 氏は次のよう に述べています

Go の最新バージョン (2013/09/19) は以下を使用します。

go test -coverprofile <filename> <package name>

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

$ go help testflag
$ go tool cover -help

Ivan Blackはコメントで次のように述べています。

go test -coverprofile cover.outデフォルトのブラウザで開き
go tool cover -html=cover.outますcover.out

ブラウザーが開くのを待ちたくないので、次のエイリアスを定義しました。

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

と入力するだけで、まだカバーされていないgcすべての行のリストが表示されます (ここでは、" " で終わらない行があります)。coverage.out1


2022年に更新、おそらくGo 1.19用

提案: アプリケーションを含むように Go のコード カバレッジ テストを拡張する

既存の " go test" ベースのカバレッジ ワークフローは引き続きサポートされますが、" go build" の新しいビルド モードとしてカバレッジを追加することが提案されています。

ユーザーが " "を使用してレース ディテクターを装備した実行可能ファイルをビルドできるのと同じ方法で、" go build -race" を使用してカバレッジを装備した実行可能ファイルをビルドできますgo build -cover

異なる GOOS/GOARCH 環境で生成されたカバレッジ プロファイルのマージがサポートされます。

于 2013-09-20T07:54:44.000 に答える
5

それはここにあります、いくつかのドキュメントはここにあります。

$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$

私はそれを使用していません、これは私が知っているすべてです。

于 2012-05-09T13:22:45.157 に答える
1

ヘルプ メニューやこの質問に対するその他の回答に触発されて、次のコマンドを実行します。

f=cover.out; if [ -f $f ]; then rm $f; fi; go test ./... -coverprofile $f && \
go tool cover -html $f && \
rm $f
于 2015-11-22T15:51:35.533 に答える
1

すばやく簡単な方法は、組み込みの go に付属のカバレッジ ツールを使用することです。

$ go test -coverprofile cp.out // 1 ライナー パーセンテージでカバレッジを出力します

上記のコマンドを実行した後、コード カバレッジを視覚的に確認したい場合 (カバーされたステートメントや見逃しなど)

$ go ツールカバー -html=cp.out

注:カバレッジを表示したいフォルダで上記のコマンドを実行する必要があります

于 2018-05-08T17:48:43.170 に答える
0

gaia-docker/base-go-build Docker イメージを使用してみてください。

これは、カバレッジを構築してテストするために必要なすべてを含む Docker イメージです。Docker コンテナー内でテスト カバレッジを実行すると、プロジェクトのテスト カバレッジ結果を含む.coverフォルダーが作成されます。

docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh

すべてのプロジェクトのフォルダーで実行されるテスト カバレッジ スクリプトは、 .coverフォルダー内で各フォルダーの junit レポートとカバレッジ レポート、およびすべてのプロジェクトのテストの結合カバレッジ レポートを生成します。

Codecov は、カバレッジ結果を収集するスクリプトも提案しています:複数のファイル

于 2017-01-03T08:49:56.400 に答える
0

でテスト カバレッジを検索する場合はWindows、目的のフォルダに移動してcommand prompt、次のコマンドを入力します。

go test -coverprofile=coverage.out && go tool cover -html=coverage.out

これは完全に簡単で、確実に機能します。

于 2021-05-11T14:10:24.530 に答える