go test命令包含*_test。Go文件只在一个目录下。

我想测试整个项目,这意味着测试应该覆盖所有*_test。进入dir ./目录下的文件和dir ./目录下的每个子树目录。

做这件事的命令是什么?


当前回答

从Go 1.9开始,使用

go test ./...

在Go 1.6到1.8中,./…还匹配了供应商目录。要跳过提供的包,您可以使用

go test $(go list ./... | grep -v /vendor/)

来源:https://github.com/golang/go/issues/11659, https://github.com/golang/go/issues/14417, https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/2366, @nickgrim的评论。

其他回答

文件夹结构

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

go test command命令

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

整个项目的覆盖报告

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%

从Go 1.9开始,使用

go test ./...

在Go 1.6到1.8中,./…还匹配了供应商目录。要跳过提供的包,您可以使用

go test $(go list ./... | grep -v /vendor/)

来源:https://github.com/golang/go/issues/11659, https://github.com/golang/go/issues/14417, https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/2366, @nickgrim的评论。

这将运行当前目录及其所有子目录下的所有测试:

$ go test ./...

这将运行给定特定目录的所有测试:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

这应该运行导入路径前缀为foo/的所有测试:

$ go test foo/...

这应该运行所有的测试导入路径前缀foo:

$ go test foo...

这将运行$GOPATH中的所有测试:

$ go test ...