小编典典

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

go

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


阅读 279

收藏
2021-11-12

共1个答案

小编典典

请注意,Go 1.2(2013 年第四季度,rc1 可用)现在将显示测试覆盖率结果

的一个主要新功能go test它现在可以计算,并在一个新的、单独安装的“ go tool cover”程序的帮助下,显示测试覆盖率结果

cover工具是一部分go.toolssubrepository。它可以通过运行安装

golang $ go get golang.org/x/tools/cmd/cover

封面工具做两件事。

  • 首先,当“ go test”被赋予-cover标志时,它会自动运行以重写包的源代码并插入检测语句。然后像往常一样编译和运行测试,并报告基本的覆盖率统计信息:

$ go test -coverprofile fmtcoverage.html fmt ok fmt 0.060s 覆盖率:91.4% 的语句 $

  • 其次,对于更详细的报告,“go test”的不同标志可以创建一个覆盖配置文件,go tool cover然后用“ ”调用的覆盖程序可以分析该文件。

提到:

最新版本的 Go (2013/09/19) 使用:

golang go test -coverprofile <filename> <package name>

可以通过运行以下命令找到有关如何生成和分析覆盖率统计信息的详细信息

golang $ go help testflag $ go tool cover -help


在评论中提到:

go test -coverprofile cover.out`然后在您的默认浏览器中 `go tool cover -html=cover.out`打开`cover.out

我什至不想等待浏览器打开,所以我定义了这个别名:

golang alias gc=grep -v -e " 1$" cover.out

我只需要输入gc,并拥有所有行的列表不是尚未覆盖的(这里用coverage.out以“结束1“)。

2021-11-12