Reputation: 20801
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?
Upvotes: 313
Views: 158249
Reputation: 1
After checking out several answers on the topic (SO and elsewhere) the go-way seems to be using tools already provided (e.g. by OS).
For multi-module projects most find-based oneliners or 'go list ...' solutions seem to fall short so I just ended up creating bash runner script (disclaimer: in WIP state, if the previous link does not work, check this)
Upvotes: 0
Reputation: 91193
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 ...
Upvotes: 606
Reputation: 1073
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%
Upvotes: 16
Reputation: 28751
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.
Upvotes: 87