【发布时间】:2013-04-27 12:13:09
【问题描述】:
go test 命令只覆盖一个目录中的*_test.go 文件。
我想go test 整个项目,这意味着测试应该覆盖目录./ 中的所有*_test.go 文件以及目录./ 下的每个子树目录。
执行此操作的命令是什么?
【问题讨论】:
go test 命令只覆盖一个目录中的*_test.go 文件。
我想go test 整个项目,这意味着测试应该覆盖目录./ 中的所有*_test.go 文件以及目录./ 下的每个子树目录。
执行此操作的命令是什么?
【问题讨论】:
这应该运行当前目录及其所有子目录中的所有测试:
$ go test ./...
这应该运行给定特定目录的所有测试:
$ go test ./tests/... ./unit-tests/... ./my-packages/...
这应该运行所有带有前缀为foo/的导入路径的测试:
$ go test foo/...
这应该运行所有以foo为前缀的导入路径:
$ go test foo...
这应该会在你的 $GOPATH 中运行所有测试:
$ go test ...
【讨论】:
... 必须转义,即 go test \...
go: warning: "subdir/..." matched no packages
go test ./... 真的是一个很棒的命令!感谢您的帮助:)
-v 参数。
go test ./...
在 Go 1.6 到 1.8 中,./... 也匹配 vendor directory。要跳过供应商的软件包,您可以使用
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 的评论。
【讨论】:
./... 不再与 ./vendor/ 目录匹配,因此您可以运行所有测试,而不是使用 go test ./... 运行任何供应商测试
文件夹结构
ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go
去测试命令命令
ProjectName$ go test -v ./...
ProjectName$ go test ./...
ProjectName$ go test -cover ./...
整个项目的覆盖率报告
ok ProjectName/folderName1 10%
ok ProjectName/folerName2 90%
ok ProjectName/folerName2 85%
【讨论】: