Skip to content
`go test` runner with output optimized for humans, JUnit XML for CI integration, and a summary of the test run results.
Branch: master
Clone or download
dnephin Merge pull request #52 from glenjamin/version-flag
Add a --version flag that goreleaser will populate for us
Latest commit 6b99016 Apr 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci update dev tools Mar 10, 2019
dobifiles update dev tools Mar 10, 2019
docs improve the demo video Jun 10, 2018
internal/junitxml output the full classname in the classname attribute of testcase elem… Mar 12, 2019
scripts Use orbs in CI config Mar 10, 2019
testjson
.gitignore Save test output in CI Apr 30, 2018
.golangci.yml update dev tools Mar 10, 2019
.goreleaser.yml Add goreleaser May 2, 2018
Gopkg.lock Use go version as reported by the binary Dec 1, 2018
Gopkg.toml Update vendor to fix a bug visible with go get Aug 4, 2018
LICENSE add README Mar 28, 2018
README.md Attempt at making the section about go test flags more obvious Apr 3, 2019
dobi.yaml update dev tools Mar 10, 2019
exitcode.go Move main package to root to fix the binary name when used with 'go get' May 2, 2018
flags.go Add flag value for noSummary flag Dec 2, 2018
flags_test.go Fix summary iota Feb 17, 2019
go.mod go mod tidy Mar 9, 2019
go.sum go mod tidy Mar 9, 2019
handler.go Move main package to root to fix the binary name when used with 'go get' May 2, 2018
main.go Add a --version flag that goreleaser will populate for us Apr 2, 2019

README.md

gotestsum

gotestsum runs tests, prints friendly test output and a summary of the test run. Requires Go 1.10+.

Install

Download a binary from releases, or get the source with go get gotest.tools/gotestsum (you may need to run dep ensure).

Demo

Demo

Docs

GoDoc CircleCI Go Reportcard

gotestsum works by running go test --json ./... and reading the JSON output.

TOC

Format

Set a format with the --format flag or the GOTESTSUM_FORMAT environment variable.

gotestsum --format short-verbose

Supported formats:

  • dots - output one character per test.
  • short (default) - output a line for each test package.
  • standard-quiet - the default go test format.
  • short-verbose - output a line for each test and package.
  • standard-verbose - the standard go test -v format.

Have a suggestion for some other format? Please open an issue!

Summary

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 --no-summary section.

Example: hide skipped tests in the summary

gotestsum --no-summary=skipped

Example: hide failed and skipped

gotestsum --no-summary=skipped,failed

Example: hide output in the summary, only print names of failed and skipped tests and errors

gotestsum --no-summary=output

JUnit XML

When the --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

When the --jsonfile flag or GOTESTSUM_JSONFILE environment variable are set to a file path gotestsum will write a line-delimited JSON file with all the test2json 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

Custom go test command

By default 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 TEST_DIRECTORY environment variable.

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 go test

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 test2json stdout).

Example: using TEST_DIRECTORY

TEST_DIRECTORY=./io/http gotestsum

Run tests when a file is modified

filewatcher will automatically set the TEST_DIRECTORY environment variable which makes it easy to integrate gotestsum.

Example: run tests for a package when any file in that package is saved

filewatcher gotestsum

Thanks

This package is heavily influenced by the pytest test runner for python.

You can’t perform that action at this time.