Go 単体テストのコード カバレッジの生成に成功した人はいますか? ウェブ上でそのためのツールを見つけることができません。
13 に答える
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
」で呼び出されたカバー プログラムで分析できます。
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.out
1
2022年に更新、おそらくGo 1.19用
提案: アプリケーションを含むように Go のコード カバレッジ テストを拡張する
既存の "
go test
" ベースのカバレッジ ワークフローは引き続きサポートされますが、"go build
" の新しいビルド モードとしてカバレッジを追加することが提案されています。ユーザーが " "を使用してレース ディテクターを装備した実行可能ファイルをビルドできるのと同じ方法で、"
go build -race
" を使用してカバレッジを装備した実行可能ファイルをビルドできますgo build -cover
。異なる GOOS/GOARCH 環境で生成されたカバレッジ プロファイルのマージがサポートされます。
それはここにあります、いくつかのドキュメントはここにあります。
$ 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
$
私はそれを使用していません、これは私が知っているすべてです。
ヘルプ メニューやこの質問に対するその他の回答に触発されて、次のコマンドを実行します。
f=cover.out; if [ -f $f ]; then rm $f; fi; go test ./... -coverprofile $f && \
go tool cover -html $f && \
rm $f
すばやく簡単な方法は、組み込みの go に付属のカバレッジ ツールを使用することです。
$ go test -coverprofile cp.out // 1 ライナー パーセンテージでカバレッジを出力します
上記のコマンドを実行した後、コード カバレッジを視覚的に確認したい場合 (カバーされたステートメントや見逃しなど)
$ go ツールカバー -html=cp.out
注:カバレッジを表示したいフォルダで上記のコマンドを実行する必要があります
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 は、カバレッジ結果を収集するスクリプトも提案しています:複数のファイル
でテスト カバレッジを検索する場合はWindows
、目的のフォルダに移動してcommand prompt
、次のコマンドを入力します。
go test -coverprofile=coverage.out && go tool cover -html=coverage.out
これは完全に簡単で、確実に機能します。