Note that Go 1.2 (Q4 2013, rc1 is available) will now display test coverage results:
One major new feature of go test
is that it can now compute and, with help from a new, separately installed “go tool cover
” program, display test coverage results.
The cover
tool is part of the go.tools
subrepository. It can be installed by running
$ go get golang.org/x/tools/cmd/cover
The cover tool does two things.
- First, when “
go test
” is given the-cover
flag, it is run automatically to rewrite the source for the package and insert instrumentation statements. The test is then compiled and run as usual, and basic coverage statistics are reported:$ go test -coverprofile fmtcoverage.html fmt ok fmt 0.060s coverage: 91.4% of statements $ - Second, for more detailed reports, different flags to “go test” can create a coverage profile file, which the cover program, invoked with “
go tool cover
“, can then analyze.
The latest versions of Go (2013/09/19) use:
go test -coverprofile <filename> <package name>
Details on how to generate and analyze coverage statistics can be found by running the commands
$ go help testflag $ go tool cover -help
Ivan Black mentions in the comments:
go test -coverprofile cover.out
and thengo tool cover -html=cover.out
opens cover.out
in your default browser
I don’t even want to wait for the browser to open, so I defined this alias:
alias gc=grep -v -e " 1$" cover.out
That I just type gc
, and have a list of all the lines not yet covered (here: with a coverage.out
line not ending with ” 1
“).