我想在Go中使用测试和包的示例创建一个包作为子目录,以保持工作区更清洁.这有可能吗?如果可以的话怎么样?
所有文档总是将测试代码放在与其他代码相同的位置,这在某种程度上是更好还是只是常规?
Von*_*onC 165
请注意,您可以go test "递归" 运行:您需要列出要测试的所有软件包.
如果您是Go项目的根文件夹,请键入:
go test ./...
Run Code Online (Sandbox Code Playgroud)
在" ./..."符号的部分中描述的" 包列表的描述的"的" 命令go ":
导入路径是一种模式,如果它包含一个或多个"
..."通配符,每个通配符可以匹配任何字符串,包括空字符串和包含斜杠的字符串.这样的模式扩展到
GOPATH树中找到的所有包目录,其名称与模式匹配.作为特例,
x/...匹配x以及x子目录.
例如,在其子目录中net/...展开net并打包.
如果您将_test.go文件保存在子文件夹中,' go test ./...'命令将能够获取它们.
但:
话虽这么说,我仍然希望将_test.go文件保留在主源文件旁边:它更容易找到.
avi*_*rat 20
已编辑
基于 VonC 的回答,
这个答案在go1.11. 尚未在高go版本中测试。
对于那些喜欢将测试保存在子文件夹中的人,比如说test,然后运行
go test ./...
Run Code Online (Sandbox Code Playgroud)
将尝试在每个文件夹中运行测试,即使是那些不包含任何测试的文件夹,因此?在非测试文件夹的后续报告中会有一个。
跑步
go test ./.../test
Run Code Online (Sandbox Code Playgroud)
相反,它将仅针对您的test文件夹,因此只有专注于您的测试文件夹的干净报告。
警告
请注意,使用测试子文件夹将阻止覆盖率报告计算。go 的理念是将测试文件留在包文件夹中。
Mat*_*att 12
将测试与代码放在一个文件中的同一目录中file_test.go,其中"file"是您正在测试的源代码文件的名称.这是惯例,我发现它最适合我自己的经验.
如果该go test工具不够自动化,您可以查看GoConvey,它有一个Web UI,它将自动更新并运行传统的Go测试以及GoConvey测试(基于行为,并且更自我记录)比传统的Go测试).
| 归档时间: |
|
| 查看次数: |
45913 次 |
| 最近记录: |