gotestsum runs tests, prints friendly test output and a summary of the test run. Requires Go 1.10+.
Download a binary from releases, or get the
go get gotest.tools/gotestsum (you may need to run
gotestsum works by running
go test --json ./... and reading the JSON
Set a format with the
--format flag or the
gotestsum --format short-verbose
dots- output one character per test.
short(default) - output a line for each test package.
standard-quiet- the default
short-verbose- output a line for each test and package.
standard-verbose- the standard
go test -vformat.
Have a suggestion for some other format? Please open an issue!
A summary of the test run is printed after the test output.
DONE 101 tests[, 3 skipped][, 2 failures][, 1 error] in 0.103s
The summary includes:
- A count of: tests run, tests skipped, tests failed, and package build errors.
- Elapsed time including time to build.
- Test output of all failed and skipped tests, and any package build errors.
To disable parts of the summary use
Example: hide skipped tests in the summary
Example: hide failed and skipped
Example: hide output in the summary, only print names of failed and skipped tests and errors
--junitfile flag or
GOTESTSUM_JUNITFILE environment variable are set
to a file path
gotestsum will write a test report, in JUnit XML format, to the file.
This file can be used to integrate with CI systems.
gotestsum --junitfile unit-tests.xml
JSON file output
--jsonfile flag or
GOTESTSUM_JSONFILE environment variable are set
to a file path
gotestsum will write a line-delimited JSON file with all the
output that was written by
go test --json. This file can be used to compare test
runs, or find flaky tests.
gotestsum --jsonfile test-output.log
go test command
gotestsum runs tests using the command
go test --json ./.... You
can change the command with positional arguments after a
--. You can change just the
test directory value (which defaults to
./...) by setting the
You can use
--debug to echo the command before it is run.
Example: set build tags
gotestsum -- -tags=integration ./...
Example: run tests in a single package
gotestsum -- ./io/http
Example: enable coverage
gotestsum -- -coverprofile=cover.out ./...
Example: run a script instead of
gotestsum --raw-command -- ./scripts/run_tests.sh
Note: when using
--raw-command you must ensure that the stdout produced by
the script only contains the
test2json output. Any stderr produced by the script
will be considered an error (this behaviour is necessary because package build errors
are only reported by writting to stderr, not the
test2json stdout). Any stderr
produced by tests is not considered an error (it will be in the
Run tests when a file is modified
filewatcher will automatically set the
TEST_DIRECTORY environment variable which makes it easy to integrate
Example: run tests for a package when any file in that package is saved
This package is heavily influenced by the pytest test runner for