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
---------------------
作者:xiaosongluo
来源:CSDN
原文:https://blog.csdn.net/xiaosongluo/article/details/80292894
版权声明:本文为博主原创文章,转载请附上博文链接!
-
2019-04-12 11:29:00
转载于:https://www.cnblogs.com/quanzhanxiaoyou/p/10694974.html
更多相关内容 -
go语言系统测试代码覆盖率统计(1)-windows下运行go项目
2021-05-23 13:42:02关于go语言的代码覆盖率测试,最开始我准备用go自带的go test来生成代码覆盖率统计,但是发现网上大部分都是用它来做单元测试的覆盖率,也有找到几篇文章是做自动化或系统测试的,但是都写的不够详细,我按照他们的...关于go语言的代码覆盖率测试,最开始我准备用go自带的go test来生成代码覆盖率统计,但是发现网上大部分都是用它来做单元测试的覆盖率,也有找到几篇文章是做自动化或系统测试的,但是都写的不够详细,我按照他们的步骤并没有成功生成覆盖率文件。
主要参考的文章如下:
https://www.cnblogs.com/zhaoxd07/p/8028847.html
https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests
如果有同学按照文章中的方法成功生成了覆盖率文件,欢迎交流。
(我频繁的找这个作者问问题,小姐姐已经不接我的语音电话了,主要是因为她写这篇文章是好几年前,而且现在也不用go,所以没有办法解决我的疑问,仍然很感恩,对我一个陌生人这么友善)
幸运的是在上面文章的链接下,有个叫 大卡尔 的网友推荐了另外一个开源工具goc,比go test的功能还要强大,它提供了一种通用的方式,可以在程序运行时就能收集系统测试覆盖率结果。
以下均是参考大卡尔在github的goc项目以及一个bubble的go语言开源小项目的代码覆盖率测试实际演练,如有涉及侵权,可与我联系。
因为之前没有接触过go,所以我先在windows上熟悉了下go的语法,以及如何成功运行一个go项目。但是goc其实目前仅支持linux环境。
一、go环境安装
https://www.runoob.com/go/go-environment.html
二、windows下待测项目部署
go项目链接:https://github.com/Q1mi/bubble.git
项目步骤也可参考该项目的README.md:https://github.com/Q1mi/bubble#readme
1.### 进入go安装目录下的src目录:D:\program files\Go\src,cmd通过命令行下载项目 git clone https://github.com/Q1mi/bubble.git 2.### 配置MySQL 在数据库中执行以下命令,创建本项目所用的数据库: CREATE DATABASE bubble DEFAULT CHARSET=utf8mb4; 3.### 在`bubble/conf/config.ini`文件中按如下提示配置数据库连接信息。 ```ini port = 9000 release = false [mysql] user = root password = admin host = 127.0.0.1 port = 3306 db = bubble 4.### 下载gin框架 添加两个环境变量,否则 go get 命令会很慢 GO111MODULE=on GOPROXY=https://goproxy.cn,direct 下载gin go get -u github.com/gin-gonic/gin 5.### 编译 cmd进入bubble目录,D:\program files\Go\src\bubble go build -o bubble.exe bubble/ 6.### 启动项目 bubble.exe conf/config.ini
启动之后,使用浏览器打开`http://127.0.0.1:9000/`即可,可以看到它实现了一个简单的待办清单功能,可进行增删查待办,并且标记待办为完成或未完成。
-
go语言系统测试代码覆盖率统计(2)-linux+goc+testproject
2021-05-23 14:23:48因为goc目前仅支持linux环境,我觉得安装虚拟机太麻烦了,之前刚好有用过docker,打算用docker创建一个centos的容器使用,又因为测试项目bubble需要用到mysql,所以打算直接安装一个基于centos的mysql容器 ...测试项目:https://github.com/Q1mi/bubble.git
goc:https://github.com/qiniu/goc.git
一.准备linux环境
因为goc目前仅支持linux环境,我觉得安装虚拟机太麻烦了,之前刚好有用过docker,打算用docker创建一个centos的容器使用,又因为测试项目bubble需要用到mysql,所以打算直接安装一个基于centos的mysql容器
启动docker后,搜索镜像
拉取镜像,因为我已经安装该镜像,所以很快就执行完成
创建并启动守护式容器,因为后面需要使用管理员身份,创建容器时加上--privileged=true
docker run -di --name=goctest --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root cent os/mysql-57-centos7
进入容器并切换为root身份
二、连接mysql,密码为空,进入mysql后,创建bubble测试项目所需要的数据库bubble,我之前已经创建了,所以提示数据库已存在
此时也可以用宿主机的navicat连接上容器的数据库,密码为创建容器时设置的密码,即root
三、安装go环境
如使用yum install -y go安装提示,No package go available
更换安装指令如下,可成功安装
yum install -y epel-release yum install golang
四、安装git
五、下载goc,并执行编译
再进入goc目录下,执行go build
默认安装的go 在 build的时候会出现长时间无响应,有类似如下报如下错误:
go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout
因为默认的go地址被墙了,碰到这种情况则更换地址,更换为七牛云的镜像,直接运行下面两条命令即可:go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
设置goc环境变量:PATH=$PATH:/goc/goc
运行 `goc server` 命令启动一个服务注册中心,默认监听端口为7777,该窗口在监控过程中不能关闭
六、下载bubble项目
重新开一个docker窗口2,进入goctest容器中下载bubble测试项目
修改config.ini中的数据库连接信息,此时密码不能为空
运行 `goc build` 命令编译bubble服务,然后启动插过桩的二进制文件,该窗口在测试过程中也必须保持开启状态,可以看到该项目的访问端口是9000
此时服务注册中心也监控到了该服务,ip为容器ip,端口默认为44347
七、进行自动化或手动功能测试
再开一个docker窗口3,进入到容器中发送http请求,请求参数可通过 go语言系统测试代码覆盖率统计(1) 在windows下调试项目时抓包获取
### 新增代办 curl http://127.0.0.1:9000/v1/todo -X POST -H "Content-Type:application/json" -d '{"title":"ddd22"}' ### 删除代办 curl http://127.0.0.1:9000/v1/todo/4 -X DELETE ### 设置待办已完成 curl http://127.0.0.1:9000/v1/todo/8 -X PUT -H "Content-Type:application/json" -d '{"status":true}' ### 设置待办未完成 curl http://127.0.0.1:9000/v1/todo/8 -X PUT -H "Content-Type:application/json" -d '{"status":false}'
查看启动bubble测试项目窗口2的日志,可看到上一步中发送的get,post,delete等请求
八、收集覆盖率数据并生成报告
测试完成后,在窗口3中运行 `goc profile` 命令收集上一步测试的 bubble项目 的代码覆盖率:
将覆盖率数据输出到cov3.out文件:goc profile > cov3.out && go tool cover -func=cov3.out
将cov3.out文件拷贝到宿主机,生成html报告,这里是复制容器的文件到宿主机的当前目录下(需要先退出容器)
docker cp goctest:/goc/bubble/cov3.out cov3.out
在宿主机的cov3.out目录下,cmd执行命令行指令,生成html报告:
go tool cover -html=./cov3.out -o cov3.html打开cov3.html,报告如下,原始报告样式比较难看,后面再考虑使用插件优化
完结,撒花!!!
-
goc 代码覆盖率测试
2021-12-04 16:53:47goc 是专为 Go 语言打造的一个综合覆盖率收集系统,尤其适合复杂的测试场景,比如系统测试时的代码覆盖率收集以及精准测试 试用下,比较适合跨部门合作下,对代码质量做优化的工具 设想以下场景: QA 部门长期提供...goc
github 地址: https://github.com/qiniu/goc.git
goc 是专为 Go 语言打造的一个综合覆盖率收集系统,尤其适合复杂的测试场景,比如系统测试时的代码覆盖率收集以及精准测试
试用下,比较适合跨部门合作下,对代码质量做优化的工具
设想以下场景:
- QA 部门长期提供接口测试,自动化黑盒测试项目代码
- 项目内无代码覆盖率测试基础
这种情况,使用 goc 不会浪费跨部门支持的资源;同时 goc 可以提供报告,来优化定制未覆盖的部分的测试用例
使用方法
直接看官方 Readme ,傻瓜式 gif 教程
例子
直接上截图
查看哪些代码没有被覆盖
执行:
go tool cover -html=coverage.out -o a.html
类似以下:
-
go语言系统测试代码覆盖率统计(3)-gocov第三方工具生成漂亮的报告
2021-05-23 18:34:40前提:已将 go语言系统测试代码覆盖率统计(2)中生成的覆盖率文件cov3.out拷贝到宿主机(windows) 下载两个文件 gocov:go get github.com/axw/gocov/gocov gocov-html:go get github.com/matm/gocov-html 生成... -
go单元测试及代码覆盖率
2019-05-07 11:35:05Go语言官方则提供了语言级的单元测试支持,即testing包,而且仅通过go工具本身就可以方便地生成覆盖率数据,也就是说,单元测试是Go语言的自带属性,除了好好设计自己的单元测试用例外,开发者不需要操心工程搭建的... -
vs-code-coverage-status:在VS Code状态栏中显示代码覆盖率指标
2021-05-01 22:58:56Coverage Status是一个Visual Studio Code插件,可在状态栏中显示SimpleCov或LCOV格式的代码覆盖率。 要求 为了使用此扩展,您需要有可用的代码覆盖率数据。 该扩展支持用于Ruby项目的SimpleCov,以及用于所有其他... -
go coverage 覆盖率工具
2021-09-22 22:54:12通常情况下,要计算测试覆盖率,需要对执行文件进行二进制拦截,比如gcov工具:通过在每个逻辑分支之后添加一个断点,来标记这个分支是否被执行到。这种基于二进制拦截的方法移植性不够好,需要针对不同CPU架构来... -
go语言系统测试代码覆盖率统计(4)-goc profile忽略某些文件的覆盖率统计
2021-10-10 12:30:18在统计项目的代码覆盖率时,按照前面几节的步骤,统计的覆盖率是整个项目下所有代码的覆盖率,实际执行测试时项目下有很多代码是完全执行不到的,比如框架生成的代码等等,如果这些都统计进去的话,会拉低整个项目的... -
Go-生成一个统一的覆盖率文件为你所有的Go代码
2019-08-14 04:01:23生成一个统一的覆盖率文件为你所有的Go代码 -
Go 的测试覆盖率
2021-12-02 14:02:11测试覆盖率是一个术语, 用于统计通过运行程序包的测试多少代码得到执行。 如果执行测试套件导致 80%的语句得到了运行, 则测试覆盖率为 80%。 计算测试覆盖率的通常方法是埋点二进制可执行文件。 例如, GNU gcov 在... -
golang代码覆盖率
2017-12-12 18:28:00写了自动化,就得统计代码覆盖率= = 原链接:https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests 其实看了原链接我并没有能成功统计出来,还是看了同事的笔记才成功的。 操作步骤 -- 按我... -
代码覆盖率测试技术
2020-12-30 09:51:26代码覆盖率的基本知识概念代码覆盖率测试技术是一种常见的白盒测试技术,是衡量软件测试工作充分性和完整性的重要指标之一。代码覆盖率指在测试的时候已经被测试过了的代码占准备被测试总代码量... -
golang 单元测试覆盖率
2021-01-02 22:26:41在golang 中,通过go test 进行单元测试,并可以分析覆盖率。 单元测试覆盖率 示例代码 首先看下示例代码。 新建目录utils,目录有以下文件 ll total 16 -rw-r--r-- 1 lanyang staff 132B 12 31 21:09 add_hint.go ... -
【测试】什么是代码覆盖率
2022-03-31 15:17:12文章目录前言覆盖率定义Go覆盖率统计方法一:直接运行go test 命令统计覆盖率1.1 创建main_test.go 文件1.2 执行go test 命令1.3 执行测试用例1.4 生成代码覆盖率文件1.5 查看覆盖率报告方法二:编译、执行插桩二... -
Golang单元测试覆盖率统计
2022-01-25 08:44:40go tool cover命令可以统计代码覆盖率 在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数是以Test为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确... -
hold住php代码--代码覆盖率统计
2021-04-24 16:52:59如果你有这样的任务:负责php代码...使用php代码覆盖率工具可以让你hold住php代码,它会动态跟踪php代码的执行,合并并生成整个php项目的代码覆盖率,最终以html的方式展现。以此为依据,我们可以做以下事情:1.分... -
GO Test 覆盖率
2022-02-18 14:27:57go test -v -coverprofile=cover.out go tool cover -html=cover.out -o coverage.html 到文件夹下面双击用浏览器看,即可 -
关于golang测试覆盖率及性能测试
2018-08-26 21:40:32命令行同样可以使用 在powershell 需要调试的文件夹下go test -coverprofile=c.out ...继续输入go tool cover -html=c.out 浏览器打印具体代码覆盖率 继续探讨性能测试语句如下 命令行同样可以执行性能测试 ... -
前端质量提升利器-马可代码覆盖率平台
2022-01-10 10:18:11马可平台是前端集成代码覆盖率平台,支持实时报告,增量报告,支持一键无侵入接入,并和Git 、消息集成打通,实时渲染报告大屏。为业务提供一站式代码覆盖率管理服务,打造独有的沉浸式代码覆盖率体验平台。 -
IDEA 统计代码覆盖率
2020-11-02 09:32:42运行 查看结果 -
集成Coverovers.io连续代码覆盖率跟踪系统。-Golang开发
2021-05-26 15:37:30goveralls Go Coverovers.io连续代码覆盖率跟踪系统的集成。 安装Goverall需要进行有效的Go安装(Go-1.2或更高版本)。 $ go获取github.com/mattn/goveralls用法首先,您将需要一个API令牌。 登录到Coveralls.io后,... -
代码覆盖率和测试覆盖率_代码覆盖率:在测试中发现差距
2020-09-17 05:23:28代码覆盖率和测试覆盖率If you’re aiming for test-driven development, you need to make sure that your code is getting properly covered by tests as you go. Originally released with 2019.3, the Code ... -
基于业务测试的增量代码覆盖率实现
2021-06-10 16:21:32增量代码:增量代码指的是相对于master一个分支新增的代码,通常对应我们的测试分支,可以通过分支的diff得出 覆盖率:指的是请求过程中,覆盖哪些代码,本文主要针对行代码fu'gai -
gitlab项目通过ci/cd产生code coverage代码覆盖率
2020-11-02 15:08:33gitlab项目通过ci/cd产生code coverage代码覆盖率背景调查方案gitlab项目gitlab-ci.yml设置gitlab runner安装与配置codecoverage结果展示trouble shouting:总结 背景 gitlab项目需要统计**code coverage ** ,一个同... -
滴滴开源Super-jacoco:java代码覆盖率收集平台
2020-12-18 19:05:32桔妹导读:Super-Jacoco是基于Jacoco、git二次开发打造的一站式JAVA代码全量/diff覆盖率收集平台,能够低成本、无侵入的收集代码覆盖率数据;Super-Jacoco除了支持JVM运行时间段的覆盖率收集外;还能够和环境无缝... -
gocover.io:GoCover.io提供任何golang软件包即服务的代码覆盖率
2021-04-29 05:26:00它是什么? 是一项提供任何golang软件包代码覆盖的服务。 它是如何工作的? GoCover通过在隔离的容器中执行程序包的测试来提高代码覆盖率。 -
goc是用于Go编程语言的全面覆盖测试系统-Golang开发
2021-05-26 16:09:31goc是适用于Go编程语言的全面覆盖测试系统,尤其是对于某些复杂场景,例如系统测试代码覆盖率收集和准确测试。 goc中文页| goc是适用于Go编程语言的全面覆盖测试系统,尤其是对于某些复杂场景,例如系统测试代码覆盖... -
Go-goveralls-Go集成Coveralls.io代码覆盖率持续跟踪系统
2019-08-13 10:26:01goveralls - Go集成 Coveralls.io 代码覆盖率持续跟踪系统 -
集成测试中的golang代码覆盖率?
2015-01-22 04:33:23<p>It seems the point of "go tool cover -var=foo" may be to generate instrumented code that can be deployed in an integration test harness. Is anyone using this feature for that purpose? If so, is ...