go test用法(获取ut覆盖率)
为了提升系统的稳定性,一般公司都会对代码的单元测试覆盖率有一定要求。下面针对golang自带的测试命令go test做讲解。
1 命令
1.1 go test ./… (运行当前目录及所有子目录下的测试用例)
# 运行当前目录及其子目录下的测试用例
go test ./...
1.2 go test dir0/…(运行指定目录及所有子目录用例)
# 运行dir0目录及其子目录下的用例
go test dir0/...
1.3 go test user…(运行user前缀的用例)
# 运行指定前缀的测试用例
go test user...
1.4 go test …(运行GOPATH下的所有用例)
# 运行GOPATH下的所有用例
go test ...
1.5 goland可视化执行
选中目录-鼠标右击-Run wtih Coverage
2 生成并分析覆盖率报告
2.1 生成报告
go test -mod=vendor -covermode=count -coverprofile=coverprofile.cov -run="^Test" -coverpkg=$(go list -mod=vendor ./... | grep -v "/test" | tr '\n' ',') ./...或 非 vendor 模式:
go test -covermode=count -coverprofile=coverprofile.cov -run="^Test" -coverpkg=$(go list ./... | grep -v "/test" | tr '\n' ',') ./...
- 执行命令之后会生成
coverprofile.cov
文件
指令简单说明:
- mod=vendor: 加载依赖的方式:从本地vendor 目录加载。适用于服务器不能从外网下载依赖的情况
- covermode: count: 统计代码访问次数;set: 统计代码是否被访问;
- atomic: 一般在并发工程中使用(?)
- run: 正则方式指定需要运行的测试方法
- coverpkg: 指定业务代码路径,多个用逗号隔开,详细说明在后面
- ./…:遍历当前目录下测试文件,包括子目录
2.2 分析报告
①html方式查看:go tool cover -html=coverprofile.cov
# 通过html 文件打开(推荐,能看到方法细节):
go tool cover -html=coverprofile.cov
②命令行查看:go tool cover -func=coverprofile.cov
# 在命令行直接查看:
go tool cover -func=coverprofile.cov
参考:https://blog.csdn.net/xiaoliizi/article/details/107568024