我想在 Go 中创建一个包,并将包的测试和示例作为子目录,以保持工作区更干净。这可能吗?如果可能的话怎么办?
所有文档总是将测试代码与其他代码放在同一位置,这在某种程度上更好还是只是约定俗成?
原文由 The Graceful Penguin 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在 Go 中创建一个包,并将包的测试和示例作为子目录,以保持工作区更干净。这可能吗?如果可能的话怎么办?
所有文档总是将测试代码与其他代码放在同一位置,这在某种程度上更好还是只是约定俗成?
原文由 The Graceful Penguin 发布,翻译遵循 CC BY-SA 4.0 许可协议
已编辑
基于 VonC 的回答,
此答案在 go1.11
中有效。尚未在上层 go
版本中进行测试。
对于那些喜欢将测试保存在子文件夹中的人,比如 test
,然后运行
go test ./...
将尝试在 每个 文件夹中运行测试,即使是那些不包含任何测试的文件夹,因此在随后的非测试文件夹报告中有 ?
。
跑步
go test ./.../test
相反,将只针对您的 test
文件夹,因此只有一个干净的报告只关注您的测试文件夹。
警告
请注意,使用测试子文件夹将阻止覆盖率报告计算。 Go 的哲学是将测试文件留在包文件夹中。
原文由 avi.elkharrat 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答888 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.6k 阅读✓ 已解决
请注意,您 可以 运行
go test
“递归地”:您需要 列出所有要测试的包。如果您位于 Go 项目的根文件夹中,请键入:
’
./...
‘ 符号在“ 命令go
”的“ 包列表说明”部分中进行了描述:如果您将
_test.go
文件保存在子文件夹中,“go test ./...
”命令将能够拾取它们。但:
话虽这么说,我仍然希望将
_test.go
文件保留在主源文件旁边:它更容易找到。对于代码覆盖率:
请参阅 Frédéric G. MARAND 和
fgmarand/gocoverstats
的“ 如何绘制 Go 测试覆盖率随时间的变化”,以生成 Go 项目的 CI 集成的总体覆盖率统计数据。也
go-cover-treemap.io
很有趣。