go语言 goc覆盖率统计

ops/2025/1/17 16:36:22/

前言

有些代码需要统计整体代码的自动化测试覆盖率,下面说一下这个覆盖率应该如何统计

实现过程

安装goc

# 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

如果上面的安装方式有问题,就给拆开安装。比如用下面的命令举个例子:

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

拆成:
第一步:
在网站https://github.com/qiniu/goc/releases/latest中找到想要下载的版本
在这里插入图片描述
下载上图的压缩包,之后给解压,就会有一个goc二进制文件
第二步:
给goc文件添加权限,并且移动到/usr/local/bin路径

chmod +x goc
mv goc /usr/local/bin

安装完成之后使用命令:goc version 查看是否安装完成

xxx$goc version
v1.4.5

编译goc版本

首先先git clone下来需要统计的被测试的服务。例如:

git clone xxxx

进入拉下来的代码目录,编译goc版本

goc build -o 想编译成的文件名 .

启动goc server服务,此时运行该服务之后就会出现下图所示address地址。接下来需要根据该地址获取统计覆盖率的结果

# 启动命令
goc server

在这里插入图片描述

接下来就把你要测试的服务给启动起来,这里面有个细节就是必须使用用goc编译的二进制文件启动

运行自动化或能自测到服务代码手段

接下来运行自动化或者自测使用到的一些脚本什么的,目的是能走到服务的代码逻辑

获取覆盖率结果

运行完之后,这个时候我们去拿到覆盖率结果,使用命令:

goc profile --center="http://xxxx:25475" > coverage.out

这个时候查看,会发现目录下多了一个coverage.out文件,将这个文件移动到git clone下来的代码路径中,进入git clone的代码路径中,执行下面的命令就可以得到总的自动化覆盖率情况

go tool cover -func=coverage.out

结果如下图
在这里插入图片描述


http://www.ppmy.cn/ops/150859.html

相关文章

Flutter插件制作、本地/远程依赖及缓存机制深入剖析(原创-附源码)

Flutter插件在开发Flutter项目的过程中扮演着重要的角色,我们从 ​​​​​​https://pub.dev 上下载添加到项目中的第三方库都是以包或者插件的形式引入到代码中的,这些第三方工具极大的提高了开发效率。 深入的了解插件的制作、发布、工作原理和缓存机…

25/1/15 嵌入式笔记 初学STM32F108

GPIO初始化函数 GPIO_Ini:初始化GPIO引脚的模式,速度和引脚号 GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOA的引脚0 GPIO输出控制函数 GPIO_SetBits:将指定的GPIO引脚设置为高电平 GPIO_SetBits(GPIOA, GPIO_Pin_0); // 将GPIO…

前端项目打包体积的分析和优化

前端项目打包体积过大可能影响页面加载速度和用户体验,因此分析和优化打包体积是一个非常重要的步骤。以下是详细的分析和优化指南: 一、分析打包体积 使用打包分析工具 Webpack 项目 使用 webpack-bundle-analyzer 插件: npm install webpack-bundle-analyzer --save-dev 在…

庖丁解java(一篇文章学java)

(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念... 当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢? 请看下文... 关于决定开始写博文的介绍 …

深度学习每周学习总结R4(LSTM-实现糖尿病探索与预测)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客R6中的内容,为了便于自己整理总结起名为R4🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结1. LSTM介绍LSTM的基本组成部分如何理解与应用LSTM 2. 数据预处理3. 数…

前端:angular工程目录结构和相关文件学习

前端工程结构,angular: 环境变量文件说明: // The file contents for the current environment will overwrite these during build. // The build system defaults to the dev environment which uses environment.ts, but if you do // n…

leetcode刷题记录(六十一)——73. 矩阵置零

(一)问题描述 73. 矩阵置零 - 力扣(LeetCode)73. 矩阵置零 - 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 [http://baike.baidu.com/item/%E5%8E%9F%E5%9…

【2024年华为OD机试】 (A卷,200分)- 最差产品奖(Java JS PythonC/C++)

一、问题描述 题目描述 A 公司准备对其下面的 N 个产品评选最差奖。评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。评选的标准是依次找到从当前产品开始前 M 个产品中最差的产品,请给出最差产品的评分序列。 输…