英文:
How to `go test` all tests in my project?
问题
go test
命令只会覆盖一个目录中的*_test.go
文件。
我想要对整个项目进行go test
,也就是说测试应该覆盖目录./
下的所有*_test.go
文件以及目录./
下的每个子目录。
如何使用命令来实现这个目标?
英文:
The go test
command covers *_test.go
files in only one dir.
I want to go test
the whole project, which means the test should cover all *_test.go
files in the dir ./
and every children tree dir under the dir ./
.
What's the command to do this?
答案1
得分: 543
这应该在当前目录及其所有子目录中运行所有测试:
$ go test ./...
这应该运行给定特定目录中的所有测试:
$ go test ./tests/... ./unit-tests/... ./my-packages/...
这应该运行以foo/
为前缀的所有导入路径的测试:
$ go test foo/...
这应该运行以foo
为前缀的所有导入路径的测试:
$ go test foo...
这应该运行您的$GOPATH中的所有测试:
$ go test ...
英文:
This should run all tests in current directory and all of its subdirectories:
$ go test ./...
This should run all tests for given specific directories:
$ go test ./tests/... ./unit-tests/... ./my-packages/...
This should run all tests with import path prefixed with foo/
:
$ go test foo/...
This should run all tests import path prefixed with foo
:
$ go test foo...
This should run all tests in your $GOPATH:
$ go test ...
答案2
得分: 81
从Go 1.9开始,使用
go test ./...
在Go 1.6到1.8版本中,./...
也会匹配vendor
目录。要跳过供应商包,可以使用
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的评论。
英文:
From Go 1.9 onwards, use
go test ./...
In Go 1.6 through 1.8, the ./...
matched also the vendor
directory. To skip vendored packages, you'd use
go test $(go list ./... | grep -v /vendor/)
Sources: 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's comment.
答案3
得分: 16
>文件夹结构
项目名/文件夹名1/文件_test.go
项目名/文件夹名2/文件1_test.go
项目名/文件夹名3/文件2_test.go
>go test命令
项目名$ go test -v ./...
项目名$ go test ./...
项目名$ go test -cover ./...
>整个项目的覆盖率报告
ok 项目名/文件夹名1 10%
ok 项目名/文件夹名2 90%
ok 项目名/文件夹名3 85%
英文:
>Folder Structure
ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go
>go test command Command
ProjectName$ go test -v ./...
ProjectName$ go test ./...
ProjectName$ go test -cover ./...
>Coverage Report for the Entire Project
ok ProjectName/folderName1 10%
ok ProjectName/folerName2 90%
ok ProjectName/folerName2 85%
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论