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


141

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

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

这样做的命令是什么?

Answers:


278

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

$ go test ./...

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

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

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

$ go test foo/...

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

$ go test foo...

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

$ go test ...

4
仅供参考,在zsh中,...最后一个示例中的go test \...
空白内容

当我试图运行在子目录我得到的所有测试go: warning: "subdir/..." matched no packages
伊万Aracki

@zzzz如何为特定文件夹运行测试?说“去测试foo ...吧...?
Omurbek Kadyrbekov

go test ./...真是个好命令!感谢您的帮助:)
大黄蜂

53

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


1
这个解决方案看起来很简单,但是运行Windows的人(我不是,但我的一些队友却很复杂)使事情变得更加复杂。无需Makefile即可在每个平台上以本机运行的Go的美妙之处。
康拉德·克莱恩

5
值得指出的是,从Go 1.9开始, ./..../vendor/目录不再与该目录匹配,因此您可以使用go test ./...
nickgrim 17-10-26

11

资料夹结构

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%
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.