Jacoco统计接口覆盖率

2023-10-17 14:20
文章标签 接口 统计 覆盖率 jacoco

本文主要是介绍Jacoco统计接口覆盖率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们通常通过接口自动化来进行上线前验证,保障当前迭代的改动不影响原有接口的正常运行,这就需要接口的覆盖率较高,才能起到重要的价值。通过jacoco进行覆盖率统计,可以清晰地统计出接口覆盖率情况,并且能够根据覆盖的代码情况进一步完善接口自动化。话不多说,接下来我们就来看下如何用jacoco进行接口覆盖率统计。

 

1、首先需要在需要统计的服务对应的机器上安装jacoco和ant

下载jacoco和ant压缩包:

ant直接解压,解压后,会自动生成一个ant的文件夹;

jacoco需要自己先新建一个文件夹,然后把压缩包放进去解压。

然后将ant加入环境变量:

vim ~/.bashrc

然后执行命令:

source ~/.bashrc

即时生效。

 

然后运行ant -v

表明安装成功。

 

2、在服务的tomcat启动项上增加如下配置:

-javaagent:/xxxx/jacoco/lib/jacocoagent.jar=includes=com.xxx.*,output=tcpserver,port=8125,address=127.0.0.1

其中,端口可随意指定,只要不跟其他端口冲突即可,如果是本机,ip须是127.0.0.1

然后重启服务,会自动监听本机的port端口

 

3、在服务器上增加build.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="JaCoCo" default="run" xmlns:jacoco="antlib:org.jacoco.ant"><!--Jacoco的安装路径--><property name="jacocoAntPath" value="/home/用户/xxx/tools/jacoco/lib/jacocoant.jar"/><!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的--><property name="jacocoExecPath" value="/home/用户/xxx/codeCoverage/study/jacocoExec"/><!--生成覆盖率报告的路径--><property name="jacocoReportPath" value="/home/用户/xxx/codeCoverage/study/report"/><!--远程tomcat服务的ip地址  xxx.xx.xxx.163(172.16.1.31)--><property name="server_ip" value="127.0.0.1"/><!--前面配置的远程tomcat服务打开的端口,要跟上面配置的一样--><property name="server_port" value="8125"/><!--源代码路径--><property name="srcPath" value="/home/用户/sourceSrc/xxx/src/main/java"/><!--service.class文件路径--><property name="classesPath" value="/home/用户/xxx/instance1/approot/testhf/BOOT-INF/classes"/><!--让ant知道去哪儿找Jacoco--><taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"><classpath path="${jacocoAntPath}"/></taskdef><target name="run"><echo message="start..."/><echo message="dump..."/><antcall target="dump"/><echo message="merge..."/><antcall target="merge"/><echo message="report..."/><antcall target="report"/><echo message="end..."/></target><!--dump任务:根据前面配置的ip地址,和端口号,访问目标tomcat服务,并生成.exec文件。--><target name="dump"><jacoco:dump address="${server_ip}" reset="true" destfile="${jacocoExecPath}/study_jacoco.exec" port="${server_port}" append="false"/></target><target name="merge"><jacoco:merge destfile="${jacocoExecPath}/merged.exec"><fileset dir="${jacocoExecPath}" includes="*.exec"/></jacoco:merge></target><!--jacoco任务:根据前面配置的源代码路径和.class文件路径,根据dump后,生成的.exec文件,生成最终的html覆盖率报告。--><target name="report"><jacoco:report><executiondata><file file="${jacocoExecPath}/merged.exec"/></executiondata><structure name="JaCoCo Report"><group name="xxxx coverage"><sourcefiles encoding="UTF-8"><fileset dir="${srcPath}"/></sourcefiles><classfiles><fileset dir="${classesPath}/com/netease/edu"/></classfiles></group></structure><html destdir="${jacocoReportPath}" encoding="utf-8"/><csv destfile="${jacocoReportPath}/report.csv"/><xml destfile="${jacocoReportPath}/report.xml"/></jacoco:report></target>
</project>

其中,上面的port必须和tomcat启动项中的端口保持一致。

然后执行ant -f build.xml即可生成报告。

 

4、持续集成

多个服务可能在多台服务器上,在同一个服务器上时,注意端口不要冲突,在多个服务器上,每次都去服务器上执行不方便,可在jenkins持续集成机器上编写脚本,通过remotessh的方式进入各个机器执行脚本并拷贝报告到job机器上,展示覆盖率结果。

此处拷贝report文件夹,需要将目标路径文件夹的权限为777才行,否则会拷贝失败~

5、覆盖率报告如下:

进入代码中可看到哪些语句被覆盖了,哪些还未被覆盖,然后作为依据补充接口自动化用例。

 

 

这篇关于Jacoco统计接口覆盖率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225976

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置