有人成功地为 Go 单元测试生成代码覆盖率吗?我在网上找不到相应的工具。
有人成功地为 Go 单元测试生成代码覆盖率吗?我在网上找不到相应的工具。
受帮助菜单和其他答案的启发,只需运行:
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 // 发布覆盖率,以单行百分比方式显示
执行上述命令后,如果您希望直观地查看代码覆盖率(例如已覆盖语句和未覆盖语句等),请执行以下操作:
$ go tool cover -html=cp.out
注意:您需要在希望查看覆盖率的文件夹中执行上述命令。
如果您想在Windows中查找测试覆盖率,只需进入所需文件夹,打开命令提示符并输入以下命令:
go test -coverprofile=coverage.out && go tool cover -html=coverage.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
在所有项目文件夹上运行的测试覆盖脚本会生成每个文件夹的junit和覆盖率报告,并生成所有项目测试的组合覆盖率报告,存储在.cover文件夹中。
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
参考资料
GoTest Coverage Tool for go lang
备选方法
Go Native Test coverage
go test -coverprofile=coverage.out
go tool cover -html=coverage.out