如何“去测试”我的项目中的所有测试?

go test命令只覆盖一个目录下的*_test.go文件。

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

做这件事的命令是什么?

104713 次浏览

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

$ go test ./...

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

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

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

$ go test foo/...

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

$ go test foo...

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

$ go test ...

从Go 1.9开始,使用

go test ./...

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

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

来源:https://github.com/golang/go/issues/11659https://github.com/golang/go/issues/14417https://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%