如何无需逐个处理包,用所有测试完整覆盖Go语言所有包?
一次性统计Go项目中pkg目录全量覆盖率(含跨包集成测试)
直接使用带通配符的-coverpkg参数即可实现,无需逐个处理包:
go test -cover -coverpkg=./pkg/... -coverprofile=cover.out ./...
关键说明:
-coverpkg=./pkg/...:指定将./pkg目录下所有子包都纳入覆盖率统计范围,不管测试用例是来自包内单元测试还是tests/integration这类外部集成测试。./...:触发运行项目中所有测试用例(包括单元测试、集成测试)。- 生成的
cover.out会包含所有测试对./pkg下所有包的覆盖数据,直接解决之前分包统计再合并的繁琐问题。
验证方式:
执行完命令后,用以下命令打开可视化覆盖率报告,确认集成测试的覆盖是否被正确统计:
go tool cover -html=cover.out
补充提示:
- 该通配符用法要求Go版本1.10及以上,确保你的开发/CI环境满足版本要求。
- 若需要排除
pkg下特定子包,Go 1.17及以上版本支持排除模式,例如:go test -cover -coverpkg=./pkg/...,!./pkg/skip-me -coverprofile=cover.out ./...
内容的提问来源于stack exchange,提问作者comdiv
相关产品推荐
相关产品推荐

