My package test cases are scattered across multiple files, if I run
go test <package_name> it runs all test cases in the package.
It is unnecessary to run all of them though. Is there a way to specify a file for
go test to run, so that it only runs test cases defined in the file?
There are two ways. The easy one is to use the
-run flag and provide a
pattern matching names of the tests you want to run. Example:
go test packageName -run NameOfTest
See the docs for more info.
Note that the
-run flag may also run other tests if they contain the string
NameOfTest, as the
-run flag matches a regexp. So to ensure that only a
test named exactly ‘NameOfTest’ is run, one has to use the regexp
go test -run "^NameOfTest$"
The other way is to name the specific file, containing the tests you want to run:
go test -v foo_test.go
But there’s a catch. This works well if:
package foo_testand imports ‘foo’.
foo.go are the same package (a common case) then you
must name all other files required to build
foo_test. In this example it
go test foo_test.go foo.go
I’d recommend to use the
-run pattern. Or, where/when possible, always run
all package tests.
Answered By – zzzz
Answer Checked By – Gilberto Lyons (GoLangFix Admin)