我有一个只有两个Go文件的package:一个定义主函数,另一个定义测试。
现在假设我有cd
进入此程序包并运行以下命令:
$ go test -cover
PASS
coverage: 41.8% of statements
ok github.com/suzaku/dummage 0.010s
如您所见,这可以正常工作。
但是我想生成一个HTML报告,所以在谷歌搜索后我使用以下命令:
$ go test -run=Coverage -coverprofile=c.out github.com/suzaku/dummage
ok github.com/suzaku/dummage 0.010s coverage: 1.8% of statements
请注意,这次覆盖率降至1.8%。
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
您确定在go测试中需要-run=Coverage
标志吗?这意味着它只会运行与Coverage
匹配的测试。如果您只想为该测试生成封面配置文件,请运行go test -coverprofile c.out github.com/suzaku/dummage
。然后,您可以运行go tool cover -html c.out
来查看HTML报告。
如果您故意添加-run=Coverage
,那么它的预期行为 - -run=Coverage
期间运行的代码量远少于运行所有测试时的代码量,并且计算了测试覆盖率对于整个包裹。