Go test Command
Internal
Overview
The test
command runs tests. The shared flags described here apply:
For more details on testing, in general, see:
go test Execution Modes
go test
recompiles each package specifies in its command line, as described below, along with any files with names matching the file pattern *_test.go
and creates a binary test file. The *_test.go
files may contain test functions, benchmark functions, fuzz tests and example functions. The resulted binary test file that is then executed. go test
runs in two modes: local directory mode and package list mode.
Local Directory Mode
go test
runs in local directory mode when it is invoked with no package argument. In this mode, go test
compiles the package sources and tests found in the current directory into a single test binary, and then runs the resulting test binary. Caching is disabled. This seems to assume there's a single package in the directory. What about nested packages? After the package test finishes (what if there are multiple packages?), the runtime prints a summary line with the test status ('ok', 'FAIL', package name and elapsed time).
Package List Mode
go test
runs in package list mode when go test
is invoked with explicit package arguments (ex: go test math
), with the ./...
argument or even with .
. In this mode the tool compiles and tests each of the packages listed on the command line. If the package test passes, the tool prints only the final 'ok' summary line. If it fails, the test prints a full test output. Successful package test results are cached to avoid unnecessary repeated running of the test.
File Selection
Caching
The rule for a cache hit is that TODO.