如何检测GO中分隔文件夹的代码覆盖率?

时间:2015-12-30 19:13:23

标签: go code-coverage

我的项目结构
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,它工作正常 或许我的项目结构方法没有很好地设计/符合要求?

2 个答案:

答案 0 :(得分:4)

传统的Go程序结构将测试与包保持在一起。像这样:

package stuff

在测试文件的顶部,您仍然会声明TestMethodX,如果您希望go test自动运行它们,则要求您的测试方法采用{{1}}格式。

有关详细信息,请参阅Go docs:https://golang.org/pkg/testing/

答案 1 :(得分:4)

不直接支持跨包测试覆盖,但有几个人已经构建了包装器来合并各个覆盖配置文件。

有关此问题的详细历史,请参阅Issue #6909。有关合并的示例工具,请参阅gotestcover。还有gocovmerge。我建立了自己的版本,所以我没有尝试过这些版本,但我确信它们都像我一样工作,而且我的工作正常。

我的感觉是,这只是一个问题,没有人写过真正引人注目的变更列表,对核心维护者来说并不那么重要,所以它还没有得到解决。它确实引发了可能破坏现有测试的小角落案例,因此对于我们大多数人来说,快速的黑客攻击并没有被接受。但我没有看到任何讨论表明核心维护者积极反对这一功能。