最近发现了一款很好用的go代码覆盖率开源工具goc,可精准测试go项目
1,安装
# Mac/AMD64
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-darwin-amd64.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
# Linux/AMD64
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-linux-amd64.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
# Linux/386
curl -s -L "https://github.com/qiniu/goc/releases/latest" | sed -nE 's!.*"([^"]*-linux-386.tar.gz)".*!https://github.com\1!p' | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
2,使用步骤
a) 首先部署一个服务注册中心goc server,它将会作为枢纽服务跟所有的被测服务通信
b) 用goc build --center="<server>" 命令编译被测程序
c)环境部署好之后,就可以做任意的测试,如本项目gotest中跑接口自动化测试用例
d) 覆盖率文件生成及查看
通过goc profile --center="<server>"查看被测集群的覆盖率结果
通过goc profile -o a.cov生成覆盖率文件
可通过go tool cover -func=merge.cov查看测试集覆盖率
注:如果是多个覆盖率文件,则可合并成一个,如下命令:
goc merge a.cov b.cov -o merge.cov
e) 覆盖率测试完成后,需要生成html报告
安装gocov和gocov-html
go get github.com/axw/gocov/gocov
go get github.com/matm/gocov-html
报告生成命令
gocov convert a.cov |gocov-html >cov.html
3,扩展相关
vscode插件使用
a,安装插件Goc Coverage
b,在项目根目录运行goc run .
c,在settings.json中修改goc.serverUrl为当前的server端地址
d,在vsocde最下方工具栏中打开Goc Coverage为ON状态(默认为OFF状态),运行自动化接口测试,即可看到相关代码被测试到同时背景色变绿