一尘不染

子目录中的Golang测试

go

我想在Go中创建一个带有测试和示例的包作为子目录,以保持工作区的整洁。这有可能吗?

所有文档总是将测试代码与其他代码放在同一位置,这在某种程度上还是惯例上更好?


阅读 164

收藏
2020-07-02

共1个答案

一尘不染

请注意,您 可以go test “递归” 运行:您需要 列出要测试的所有软件包

如果您位于Go项目的根文件夹中,请键入:

go test ./...

./...”符号在“ 命令 ” 的“
软件包列表说明
部分中进行了描述go

如果导入路径包含一个或多个...通配符,则通配符是一种模式,每个通配符都可以匹配任何字符串,包括空字符串和包含斜杠的字符串。

这样的模式将扩展到GOPATH名称与模式匹配的树中找到的所有软件包目录。

作为特殊情况,x/...匹配xx的子目录。
例如,net/...扩展到net并将其打包在其子目录中。


如果将_test.go文件保存在子文件夹中,则“ go test ./...”命令将能够提取它们。
但:

  • 您需要为导出的变量和函数(在测试中使用的)加上包名称的前缀,以便测试文件能够访问包导出的内容。
  • 您将不会访问未导出的内容。

话虽这么说,我仍然希望将_test.go文件保留在主源文件旁边:更容易找到。

2020-07-02