我们的项目主要基于 Golang 开发,公司要求统计测试覆盖率。所以,我们摸索了一下在 Golang 下如何统计整个项目得测试覆盖率:

以下内容均基于 Go SDK 1.10.1 获得,不保证可以向下兼容

先直接上结果:

go test -coverpkg=./... -coverprofile=coverage.data -timeout=5s ./...
go tool cover -html=coverage.data -o coverage.html
go tool cover -func=coverage.data -o coverage.txt

下面是具体的分析:

如何测试并统计各go语法块覆盖率
go test -h
-cover-covermode-coverpkg-coverprofile-covermode mode-coverpkg pattern1,pattern2,pattern3-timeout t-coverprofile cover.out
如何统计当前的项目测试覆盖率数值
go tool cover -func=coverage.data -o coverage.txt

在输出文件的最后一行:

total:										(statements)		3.1%

即可获得加权后的总覆盖率。

如何获取直观的测试覆盖情况
go tool cover -html=coverage.data -o coverage.htmlgo tool cover -html=coverage.data