统计 Golang 项目的测试覆盖率
时间:2022-3-29 作者:smarteng 分类: Go语言
我们的项目主要基于 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
:可选值有 set、count、atomic,其中 set (默认值)仅统计语法块是否覆盖,count 会统计语法块覆盖了多少次,atomic 用于多线程测试中统计语法块覆盖了多少次。 - 参数
-coverpkg pattern1,pattern2,pattern3
:覆盖率统计 packages 的范围,若不设置默认只统计有执行了测试的 packages。 - 参数
-timeout t
:单个测试用例的超时时间,默认值 10 分钟。 - 参数
-coverprofile cover.out
:覆盖率 profile 文件输出地址。
如何统计当前的项目测试覆盖率数值
输出报告时,我们需要的是整个项目,目前覆盖率达到多少。所以需要使用命令 go tool cover -func=coverage.data -o coverage.txt
在输出文件的最后一行:
total: (statements) 3.1%
即可获得加权后的总覆盖率。
如何获取直观的测试覆盖情况
在提升测试覆盖率时,我们关注的是当前文件到底覆盖的情况如何。这时,需要使用 go tool cover -html=coverage.data -o coverage.html
或者直接使用 go tool cover -html=coverage.data
,即可在网页中直接查看各文件的覆盖情况。
smarteng
人生就流星,虽然转瞬即逝,但也有永恒。
恰饭
分类
热门文章
- 使用Erlang的OTP框架创建应用
- php 使用curl模拟登录discuz以及模拟发帖
- 腾讯QQ、阿里旺旺、淘宝、MSN在线状态代码生成
- 新浪微博错误代码解析
- erlang程序设计笔记
- 《HTML 5与CSS 3权威指南》权威的HTML5与CSS3实战教程
- dedecms修改数据库密码配置文件
- 服务器优化小记--Etag和Expires
- 在PHP5中使用PHPMailer发送邮件
- PHP中冒号、endif、endwhile、endfor介绍
- PHP框架——ThinkPHP
- QQ登陆成功返回openId后与网站绑定
- Mediawiki的配置和修改方法
- 使用Golang的官方mock工具--gomock、mockgen
- 用yaf-codes-generator 生成代码
最新日志
- MacOs 电脑关闭/打开IPV6
- MySQL中datetime和timestamp的区别
- C++声明结构
- 如何保证数据库和缓存的一致性
- 优雅的golang日期时间处理库go-carbon
- API接口纪要
- 解析 Golang 测试(11)- 模糊测试
- 解析 Golang 测试(10)- 什么是好的单测
- 解析 Golang 测试(9)- 一篇文章搞懂 testify
- 解析 Golang 测试(8)- gomonkey 实战
- 解析 Golang 测试(7)- 如何针对 Redis 进行 Fake 测试
- 解析 Golang 测试(6)- 如何针对 MySQL 进行 Fake 测试
- 解析 Golang 测试(5)- MySQL 经典 mock driver—— sqlmock
- 解析 Golang 测试(4)- 一篇文章教你分清 Mock,Stub,Fake
- 解析 Golang 测试(3)- goconvey 实战
存档
- 2023年11月(1)
- 2023年10月(1)
- 2023年3月(2)
- 2023年2月(1)
- 2022年12月(1)
- 2022年9月(13)
- 2022年8月(5)
- 2022年7月(9)
- 2022年6月(2)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(2)
- 2021年12月(1)
- 2021年11月(14)
- 2021年10月(2)
- 2021年9月(111)
- 2015年3月(1)
- 2014年5月(4)
- 2014年4月(18)
- 2014年1月(1)
- 2013年11月(2)
- 2013年7月(1)
- 2013年6月(1)
- 2013年3月(13)
- 2013年2月(3)
- 2013年1月(1)
- 2012年12月(8)
- 2012年11月(8)
- 2012年10月(1)
- 2012年9月(13)
- 2012年8月(4)
- 2012年6月(2)
- 2012年5月(10)
- 2012年4月(13)
- 2012年3月(9)
- 2012年2月(8)
- 2011年11月(1)
- 2011年8月(9)
- 2011年7月(8)
- 2011年6月(8)
- 2011年5月(7)
- 2011年4月(19)
- 2011年3月(15)
- 2011年2月(8)
- 2011年1月(9)
- 2010年12月(2)
- 2010年11月(2)
- 2010年10月(2)
- 2010年9月(8)
- 2010年8月(9)
- 2010年7月(1)
- 2010年6月(9)
- 2010年5月(5)
- 2010年1月(7)
- 2009年12月(21)
- 2009年11月(29)
- 2009年10月(100)
- 2009年8月(1)
- 2009年7月(15)
- 2009年6月(52)
标签
timestamp
datetime
time
awk
技术文章
SEM
营销
赚钱
go-zero
抓包
测试覆盖率
系统
hostname
goquery
mockgen
gomock
validator
urldecode
urlencode
redirect
context
port
pulsar
Consul
epoll
yaml
错误处理
code-review
xlsx
excel
c
读书
阅读
写作
生活
shen
统计
test
Module
mod
效率
无密码
天网
Future
video
computer
tmux
ce
Logrotate
supervisor
command
screen
rsa
java
markdown
测试
水平居中
error
brew
homebrew
http
nodejs
composer
工具
框架
gopath
gomod
golang
go
播放器
服务器
腾讯云
单元测试
爬虫
命令
emlog
replace
模型
PHP升级
阿里云
习惯
group_concat
SQL Server
PHPExcel
面试
单点登录
开源项目
tag
guid
yaf
md5
博客
微博
团队
Geolocation
Mac
客户端
网赚
豆瓣
编程语言
京东