我的项目结构stuff/stuff.go -> package: stufftest/stuff/stuff_test.go -> package: test虽然 stuff_test 从 stuff.go 执行代码,但它显示coverage: 0.0% of statements我使用了 go test -cover如果我将 *_test.go 移动到程序的东西文件夹,它工作正常。或者也许我的项目结构方法设计得不好/不符合?
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
传统的 Go 程序结构将测试与包保持在一起。像这样:
project
|-stuff
|--stuff.go
|--stuff_test.go
在您的测试文件的顶部,您仍然声明package stuff,并且TestMethodX如果您想go test自动运行它们,则需要您的测试方法采用这种形式。
有关详细信息,请参阅 Go 文档:https : //golang.org/pkg/testing/
汪汪一只猫
TA贡献1898条经验 获得超8个赞
不直接支持跨包测试覆盖率,但有几个人已经构建了包装器来合并各个覆盖率配置文件。
有关这方面的悠久历史,请参阅问题 #6909。并参阅gotestcover以获取用于进行合并的示例工具。还有gocovmerge。我构建了自己的版本,所以我还没有尝试过任何这些,但我确信它们都像我的一样工作,而且我的工作正常。
我的感觉是,这只是一个没有人为之编写真正引人注目的变更列表的问题,并且对核心维护者而言并不那么重要,因此尚未解决。它确实提出了一些可能会破坏现有测试的极端情况,因此对我们大多数人有效的快速黑客并没有被原样接受。但是我没有看到任何讨论表明核心维护者积极反对这个功能。
- 2 回答
- 0 关注
- 210 浏览
添加回答
举报
0/150
提交
取消