我的项目结构
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,它工作正常
或许我的项目结构方法没有很好地设计/符合要求?
答案 0 :(得分:4)
传统的Go程序结构将测试与包保持在一起。像这样:
package stuff
在测试文件的顶部,您仍然会声明TestMethodX
,如果您希望go test
自动运行它们,则要求您的测试方法采用{{1}}格式。
有关详细信息,请参阅Go docs:https://golang.org/pkg/testing/
答案 1 :(得分:4)
不直接支持跨包测试覆盖,但有几个人已经构建了包装器来合并各个覆盖配置文件。
有关此问题的详细历史,请参阅Issue #6909。有关合并的示例工具,请参阅gotestcover。还有gocovmerge。我建立了自己的版本,所以我没有尝试过这些版本,但我确信它们都像我一样工作,而且我的工作正常。
我的感觉是,这只是一个问题,没有人写过真正引人注目的变更列表,对核心维护者来说并不那么重要,所以它还没有得到解决。它确实引发了可能破坏现有测试的小角落案例,因此对于我们大多数人来说,快速的黑客攻击并没有被接受。但我没有看到任何讨论表明核心维护者积极反对这一功能。