如何在我的项目中"测试"所有测试?

har*_*ass 114 testing go

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

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

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

zzz*_*zzz 228

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

$ go test ./...
Run Code Online (Sandbox Code Playgroud)

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

$ go test foo/...
Run Code Online (Sandbox Code Playgroud)

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

$ go test foo...
Run Code Online (Sandbox Code Playgroud)

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

$ go test ...
Run Code Online (Sandbox Code Playgroud)

  • 在zsh的FYI中,最后一个例子中的裸```必须被转义,IE`去测试\ ...` (3认同)

use*_*610 45

从Go 1.9开始,使用

go test ./...
Run Code Online (Sandbox Code Playgroud)

在Go 1.6到1.8中,./...匹配vendor目录.要跳过销售包装,你可以使用

go test $(go list ./... | grep -v /vendor/)
Run Code Online (Sandbox Code Playgroud)

来源: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 1.9](https://golang.org/doc/go1.9#vendor-dotdotdot)`./ ...`不再匹配`./ vendor /`目录,所以你可以使用`go test./ ...`来运行所有测试而不运行任何供应商测试 (5认同)

mut*_*ius 5

资料夹结构

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go
Run Code Online (Sandbox Code Playgroud)

去测试命令命令

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...
Run Code Online (Sandbox Code Playgroud)

整个项目的覆盖率报告

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
Run Code Online (Sandbox Code Playgroud)