回答:
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 coverage: 91.4% of statements
$
次に、より詳細なレポートの場合、「テストを実行」するためのさまざまなフラグでカバレッジプロファイルファイルを作成でき、「
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
ます)。
go test -coverprofile cover.out
そしてブラウザでgo tool cover -html=cover.out -o cover.html
開くcover.html
go tool cover -html=cover.out
は自動的にブラウザを開きますが、私のシステムでは機能しません。ブラウザを開いたままにしておき、必要に応じてページを更新することをお勧めします。
Goには、テストとカバレッジのための素晴らしいツールが付属しています。すべてのGoツールは十分に文書化されていますが、Goの公式ブログのカバーストーリーの記事をgo tool cover -help
読むことをお勧めします。それはたくさんの例があり、私はそれを強くお勧めします!
〜/ .bash_profileにこの関数があります。(これをターミナルに貼り付けるだけで、試すことができます)。
cover () {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}
次にcd
、goプロジェクト/パッケージフォルダーに移動し、と入力しcover
ます。これにより、現在のパッケージの各ファイルのテスト済みコードと未テストコードを表示するビジュアルツールがブラウザーで開きます。とても便利なコマンド!まだ100%テストされていないものを見つけるために私は強くお勧めします!表示される結果はファイルごとです。左上のドロップダウンから、すべてのファイルの結果を確認できます。
このコマンドを使用すると、たとえば、パッケージのカバレッジを確認することもできます。
cover fmt
このコマンドからのターミナルの出力は次のようになります:
ok fmt 0.031s coverage: 91.9% of statements
それに加えて、ブラウザでは、このツールがテストでカバーされていないすべてのコード行を赤で示しています。
ブラウザで開く代わりに、htmlカバレッジファイルを保存することもできます。これは、テスト+カバレッジがJenkinsなどのCIツールによって実行される場合に非常に役立ちます。そうすることで、中央サーバーからカバレッジファイルを提供でき、チーム全体が各ビルドのカバレッジ結果を確認できます。
$ 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
$
私はそれを使用していません、これは私が知っているすべてです。
~/go/pkg/tool/linux_amd64
、昨日の最後のGoビルドと一致します。
カバーされていない行を関数で直接ターミナルで確認したい場合は、この目的のためにカバーツールを書き直しました。https://github.com/gregoryv/uncoverで入手できます。
使用法
go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out
スクリーンショット
VSCodeを使用している場合、この機能はそのまま使用できます(ただし、デフォルトでは無効になっています)
保存+カバレッジレポートのテストをオンにするだけ
https://github.com/microsoft/vscode-go/wiki/On-Save-features
どの行がカバーされていないかをエディターに表示します。これは非常に便利です。
すばやく簡単な方法は、組み込みのgoに付属するカバレッジツールを使用することです。
$ go test -coverprofile cp.out //ライナーのパーセンテージでカバレッジを放出します
上記のコマンドを実行した後、コードカバレッジを視覚的に確認したい場合(カバーされたステートメントやミスなど)
$ツールカバーを行きます-html = cp.out
注:カバレッジを表示するフォルダーで上記のコマンドを実行する必要があります
gaia-docker / base-go-build Docker Image を使用してみてください。
これは、カバレッジを構築およびテストするために必要なすべてを含むDockerイメージです。Dockerコンテナー内でテストカバレッジを実行すると、プロジェクトのテストカバレッジ結果を含む.coverフォルダーが作成されます。
docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh
テスト・カバレッジ・スクリプトは、すべてのプロジェクトで実行されているのフォルダを生成、内部.coverフォルダのJUnitやフォルダごとにカバレッジ・レポート、およびすべてのプロジェクトの組み合わせカバレッジレポートテスト。
Codecovは、カバレッジ結果を収集するスクリプトも提案しています:複数のファイル
Golangのテストカバレッジ
go get github.com/axw/gocov/gocov
go get -u gopkg.in/matm/v1/gocov-html
正しくインストールされていることを確認し、ターミナルからアクセスできること
テストケースを実行する
テストケースを実行すると、.jsonファイルが再作成されます。ファイルに基づいて、.htmlファイルのコードカバレッジレポートを取得します。
gocov test >your_Coverage_report.json
テストケースが完了したら、.jsonを使用して.htmlファイルにレポートを生成します。
gocov-html your_Coverage_report.json >your_Coverage_report.html
参照
別の方法
ネイティブテストカバレッジに移動
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
go test -coverprofile <filename> <package name>