Golang 1.10.1版本包测试覆盖率功能无法正常使用求助
正确生成Go包测试覆盖率的方法
结合你的仓库结构和需求,我来帮你调整命令并说明关键注意事项:
首先明确你的仓库结构(在go-test-cov根目录下):
go-test-cov/ ├── models/ # 目标业务代码包 └── models_test/ # 测试代码目录
针对你的场景的正确命令
如果你的models_test目录下的测试用例是专门针对models包编写的,你可以使用以下两种命令之一:
1. 使用相对路径指定目标包(适合本地开发)
go test -v ./models_test -coverpkg=./models -coverprofile=c.out && go tool cover -func=c.out
2. 使用模块完整路径(适合有go.mod的项目,更稳定)
如果你的项目已经初始化了go.mod,模块名为github.com/apremalal/go-test-cov,可以用完整模块路径指定目标包:
go test -v ./models_test -coverpkg=github.com/apremalal/go-test-cov/models -coverprofile=c.out && go tool cover -func=c.out
关键注意事项
- 测试文件命名规范:确保
models_test目录下的测试文件都遵循Go的命名规则,即文件名以_test.go结尾(比如user_test.go),否则go test会无法识别测试用例。 - 同包测试更简便:如果你的测试代码和业务代码放在同一个包下(即测试文件直接放在
models目录下,包名声明为package models),可以省略-coverpkg参数,命令会更简洁:go test -v ./models -coverprofile=c.out && go tool cover -func=c.out - 跨包测试的包名:如果
models_test目录下的测试包名是models_test(即独立测试包),必须通过-coverpkg明确指定要统计覆盖率的目标包(也就是models),否则覆盖率统计只会针对models_test包本身,达不到你想要的效果。
内容的提问来源于stack exchange,提问作者Anuruddha
相关产品推荐
相关产品推荐

