ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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


o
omurbek

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

$ go test ./...

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

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

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

$ go test foo/...

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

$ go test foo...

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

$ go test ...

zsh 中的仅供参考,最后一个示例中的 ... 必须转义,IE go test \...
当我尝试在 subdir 中运行所有测试时,我得到 go: warning: "subdir/..." matched no packages
@zzzz 如何为特定文件夹运行测试?说“去测试 foo……吧……?
go test ./... 真是一个很棒的命令!感谢您的帮助:)
如果您还想查看成功测试的输出,请不要忘记 -v 参数。
u
user7610

From Go 1.9 onwards,使用

go test ./...

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

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


尽管这个解决方案看起来很简单,但它让 Windows 上的人(我不是,但我的一些队友是)运行它变得更加复杂。 Go 在每个平台上运行本机而不需要 Makefile 的美妙之处是巨大的。
值得指出的是,as of Go 1.9 ./... 不再与 ./vendor/ 目录匹配,因此您可以运行所有测试,而没有使用 go test ./... 的供应商测试
m
muthukumar selvaraj

文件夹结构

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%