Go単体テストのコードカバレッジの生成に成功した人はいますか?そのためのツールがウェブ上で見つかりません。
Go 1.2(2013年第4四半期、rc1が利用可能) が表示されることに注意してくださいテストカバレッジ結果 :
go test
の主要な新機能の1つは、計算できるようになり、新しくインストールされた「go tool cover
」プログラムの助けを借りて、テストカバレッジ結果を表示できることです。
cover
ツールはgo.tools
subrepository の一部です。実行することでインストールできます
$ 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 -o cover.html
ブラウザーでcover.html
を開きます
ブラウザが開くのを待ちたくないので、このエイリアスを定義しました。
alias gc=grep -v -e " 1$" coverage.out
gc
と入力するだけで、まだカバーされていないすべての行のリストnotがあります(ここではcoverage.out
行not「1
」で終わる)。
Goには、テストとカバレッジのための素晴らしいツールが付属しています。 Goツールはすべて十分に文書化されていますが、go tool cover -help
読むことをお勧めします Go公式ブログのカバーストーリー記事 。たくさんの例がありますので、強くお勧めします!
〜/ .bash_profileにこの関数があります。 (端末に貼り付けて試してみてください)。
cover () {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}
次に、cd
をgo project/packageフォルダーに入れ、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
$
私はそれを使用していません、これは私が知っているすべてです。
上記の良い答えに加えて、私はこれらの3行がそれを取得する最も簡単な方法であるとわかります(これにはすべてのパッケージが含まれます):
go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html
HTMLファイルには、すべてのファイルに移動するためのドロップダウンボタンがあります。
ターミナルで関数ごとにカバーされていない行を直接見たい場合は、この目的のためにカバーツールを書き直しました。 https://github.com/gregoryv/uncover で入手できます。
使用法
go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out
スクリーンショット
ヘルプメニューやこの質問に対する他の回答に触発されて、実行するだけです:
f=cover.out; if [ -f $f ]; then rm $f; fi; go test ./... -coverprofile $f && \
go tool cover -html $f
すばやく簡単な方法は、組み込みのgoに付属のカバレッジツールを使用することです。
$ go test -coverprofile cp.out // 1つのライナーパーセンテージでカバレッジを発行します
上記のコマンドを実行した後、コードカバレッジを視覚的に確認したい場合(カバーされたステートメントや欠落など)
$ go tool cover -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