登录
首页 >  Golang >  Go问答

为什么 `go test ./... -coverprofile=coverage.out` 没有覆盖所有情况?

来源:stackoverflow

时间:2024-03-23 17:39:28 256浏览 收藏

使用 `go test ./... -coverprofile=coverage.out` 无法涵盖所有情况,因为此命令仅报告执行过的包的覆盖率。对于没有测试文件的包,它将不会报告覆盖率。要获得整个项目的适当覆盖率百分比,可以使用 `-covermode=atomic` 和 `-coverpkg=./...` 标志。

问题内容

我正在尝试对项目运行测试覆盖率报告。当我在项目根目录运行 go test ./... -count=1 时,它会列出正在测试的所有命名空间。对于这个项目,它看起来像这样:

?       some/namespace  [no test files]
?       some/namespace/A    [no test files]
?       some/namespace/B    [no test files]
ok      some/namespace/util 0.260s  coverage: 100.0% of statements

但是,当我运行 go test ./... -coverprofile=coverage.out 时,它只会为我的 util 包生成行,底部的最后一行显示 100% 的测试覆盖率。虽然我确实 100% 覆盖了该命名空间,但我希望如果我要求整个项目的测试覆盖率,则总百分比将包括没有测试的包。

如何为整个项目获得适当的测试覆盖率百分比?


解决方案


尝试使用其他标志:

去测试./... -covermode=atomic -coverprofile=coverage.out -coverpkg=./...

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>