我的项目结构
stuff/stuff.go -> package: stuff
test/stuff/stuff_test.go -> package: test
虽然stuff_test执行来自stuff.go的代码但它显示
coverage: 0.0% of statements
我使用
go test -cover
如果我将我的*_test.go移动到程序的stuff-folder它工作正常.
或许我的项目结构方法没有很好地设计/符合要求?
您可以使用该-coverpkg选项来选择要记录其覆盖范围信息的包。
从输出go help testflag:
-coverpkg pattern1,pattern2,pattern3
将每个测试中的覆盖率分析应用于与模式匹配的包。默认情况下,每个测试仅分析正在测试的包。有关包模式的描述,请参阅“转到帮助包”。套装-封面。
例如:
go test ./test/... -coverprofile=cover.out -coverpkg ./...
Run Code Online (Sandbox Code Playgroud)
然后查看报告:
go tool cover -html=cover.out
Run Code Online (Sandbox Code Playgroud)
传统的 Go 程序结构将测试与包保持在一起。像这样:
project
|-stuff
|--stuff.go
|--stuff_test.go
Run Code Online (Sandbox Code Playgroud)
在您的测试文件的顶部,您仍然声明package stuff,并且TestMethodX如果您想go test自动运行它们,则需要您的测试方法采用这种形式。
有关详细信息,请参阅 Go 文档:https : //golang.org/pkg/testing/
不直接支持跨包测试覆盖率,但有几个人构建了包装器来合并各个覆盖率配置文件。
有关此问题的悠久历史,请参阅问题#6909 。有关进行合并的示例工具,请参阅gotestcover 。还有gocovmerge。我构建了自己的版本,所以我没有尝试过其中任何一个,但我确信它们都像我的一样工作,而且我的工作得很好。
我的感觉是,这只是一个没有人编写真正引人注目的变更列表的问题,并且对于核心维护者来说并不是那么重要,因此它还没有得到解决。它确实提出了可能破坏现有测试的小极端情况,因此对我们大多数人有效的快速技巧尚未被按原样接受。但我还没有看到任何表明核心维护者积极反对此功能的讨论。
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |