如何在Go中衡量测试覆盖率

205

有人成功地为 Go 单元测试生成代码覆盖率吗?我在网上找不到相应的工具。


1
针对VSCode用户:https://github.com/golang/vscode-go/blob/master/docs/features.md#code-coverage - Nathaniel Jones
16个回答

2

受帮助菜单和其他答案的启发,只需运行:

f=cover.out
if [ -f $f ]; then
  rm $f
fi
go test ./... -coverprofile $f && \
go tool cover -html $f && \
rm $f

2

一种快速简便的方法是使用内置于Go中的覆盖率工具:

$ go test -coverprofile cp.out // 发布覆盖率,以单行百分比方式显示

执行上述命令后,如果您希望直观地查看代码覆盖率(例如已覆盖语句和未覆盖语句等),请执行以下操作:

$ go tool cover -html=cp.out

注意:您需要在希望查看覆盖率的文件夹中执行上述命令。


2

如果您想在Windows中查找测试覆盖率,只需进入所需文件夹,打开命令提示符并输入以下命令:

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

这非常简单,可靠性高。


我遇到了这个错误 >> 没有必需的模块提供包 .out; 要添加它,请使用以下命令:go get .out - Reza Taba

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

在所有项目文件夹上运行的测试覆盖脚本会生成每个文件夹的junit和覆盖率报告,并生成所有项目测试的组合覆盖率报告,存储在.cover文件夹中。

Codecov还提供了一个收集覆盖率结果的脚本:多个文件


-1

关于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

参考资料

GoTest Coverage Tool for go lang

Go Test Report Tool

备选方法

Go Native Test coverage

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

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接