I’ve been writing a lot of Golang code lately. For the most part, I always write unit and integration tests for whatever program that I am building. I’ve been using VSCode as my IDE and really like it. The one thing that I was having trouble with was getting the code coverage to show in the IDE for my integration tests.
I have a different build tag in my unit test code and my integration test code so that I can run the two separately in my CI/CD pipeline. The following build tag is in all of the integration code
// +build integration
I have the following build tag in all of my unit tests
// +build unit
VSCode has the hooks to enable configuration to run and show the coverage of the unit test code in the UI, but not for the integration tests.
I was able to get a visual representation of my code coverage based on my integration tests by running the native go tools. As of Golang 1.2 you can now display test coverage results. It does require a separate cover
program that can be installed. Run the following in your project
go get golang.org/x/tools/cmd/cover
Once that is installed you can run the following to generate a coverage profile file
go test -cover -coverpkg github.com/rchapin/mypackage -tags=integration ./... -coverprofile=/var/tmp/c.out
-cover
enables the coverage analysis. -coverpkg
will apply coverage analysis to in the tests to the packages that match the CSV of patterns provided. -coverprofile
will write out a coverage profile to the path given.
After that has finished, run the following to generate an HTML representation of the coverage profile
go tool cover -html=/var/tmp/c.out