218

go test命令仅涵盖*_test.go一个目录中的文件。

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

执行此操作的命令是什么?

4

3 回答 3

428

这应该运行当前目录及其所有子目录中的所有测试:

$ go test ./...

这应该针对给定的特定目录运行所有测试:

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

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

$ go test foo/...

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

$ go test foo...

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

$ go test ...
于 2013-05-03T07:05:11.660 回答
67

从 Go 1.9 开始,使用

go test ./...

在 Go 1.6 到 1.8 中,./...也匹配了vendordirectory。要跳过供应商的软件包,您可以使用

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 的评论。

于 2016-03-07T20:01:28.763 回答
12

文件夹结构

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

go test 命令 命令

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

整个项目的覆盖率报告

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
于 2018-05-21T11:38:15.170 回答