Getting coverage of Go unit tests (the ones in _test.go files) is easy, but there's no documented way to get coverage of tests run externally, against a running "main" binary, like integration tests.

I wrote about a hack I used to solve this on the CloudFlare Blog. It amounts to making a special test case that runs main(), putting it behind a build flag and compiling with go test -c.

Go coverage with external tests | CloudFlare Blog (archive)