Golang在子目录中进行testing

我想在Go中创build一个包,将包的testing和例子作为子目录来保持工作区的清洁。 这是可能的,如果是这样的话?

所有的文档总是把testing代码放在与其他代码相同的地方,这在某种程度上更好还是只是惯例?

谢谢。

请注意,您可以运行“recursion地”运行go test :您需要列出所有要testing的软件包

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

 go test ./... 

“ 命令行 ”的“ 软件包列表说明 ”部分描述了 “。/ ./... ”符号:

一个导入path是一个模式,如果它包含一个或多个“ ... ”通配符,每个通配符都可以匹配任何string,包括空string和包含斜杠的string。

这种模式扩展到所有在GOPATH树中find的名称与模式匹配的包目录。

作为一个特例, x/...匹配x以及x的子目录。
例如, net/...扩展到net并在其子目录中打包。


如果你把你的_test.go文件保存在一个子文件夹中,那么' go test ./... _test.go go test ./... '命令将能够把它们提取出来。
但:

  • 您将需要在导出的variables和函数(在testing中使用)中添加您的软件包名称,以便testing文件能够访问软件包导出的内容。
  • 你不会访问非导出的内容。

也就是说,我仍然希望将_test.go文件放在主源文件的旁边:它更容易find。

把你的testing放在一个名为file_test.go的文件的同一目录中,其中“file”是你正在testing的源代码文件的名称。 这是惯例,我发现它是我自己的经验最好的。

如果go test工具对你来说不够自动化,那么你可能会考虑GoConvey ,它有一个Web UI,它将自动更新和运行传统的Gotesting以及GoConveytesting(这些testing是基于行为的,而且更自我 – 比传统的Gotestinglogging)。

我通常不做testing,但可以将文件分组到目录中,并使用导入

import "./models"如果是一个级别
import "../models如果是一级和一级

例如,对于:
./models/todo.go
./test/todo_test.go

todo_test.gotestingtodo.go ,你的导入todo_test.go将是

import "../models"

请尝试下面的github存储库。

https://github.com/appleboy/golang-testing

您可以下载golangtesting脚本。

 $ curl -fsSL https://raw.githubusercontent.com/appleboy/golang-testing/master/coverage.sh /usr/local/bin/coverage $ chmod +x /usr/local/bin/coverage