使用jacoco检测接口自动化代码覆盖率

jacoco下载

官方下载地址:https://central.sonatype.com/?smo=true

jacoco工具主要包含:

jacocoagent.jar,jacocoant.jar,jacococli.jar

jacocoagent.jar是一个代理程序,用来搜集执行信息,在请求或者JVM退出的时候生成代码覆盖率数据

jacocoant.jar是在ant项目任务中加入jacoco,在启动Java程序,记录数据并能创建覆盖率报告,通过coverage, agent, dump和 merge。report等任务会创建不同格式的报告

jacococli.jar提供了一些命令行接口,生成exec文件、合并或生成html报告等

准备工作:

1、将jacoco下载并解压
2、被测项目工程打jar包,可找开发打jar包
3、下载项目工程包,因为在将覆盖率文件转换成html文件时需要用到,需要项目里这两个目录\target\classes(这个目录需要项目编译后才会生成)、\src\main\java。

开始执行

一、本地运行jar包(运行时jacoco自动插桩)

java -javaagent:D:\jacoco\test\jacoco-0.8.8\lib\jacocoagent.jar=includes=*,output=tcpserver,port=6301,address=localhost,append=false -jar D:\jacoco\test\services-edu-web.jar

参数解读:
--includes:类名,比如【com.*】代表包含com开头的类名
--classdumpdir:类文件存储的目录
--output:tcpserver方式,通过address和端口获取数据
--append:true是执行数据文件已经存在,则覆盖数据将附加到现有文件
--address:tcpserver的访问地址

注:-address设置tcpserver的访问地址。可以配置127.0.0.1,也可以配置为实际访问ip
配置为127.0.0.1的时候,dump数据只能在这台服务器上进行dump,就不能通过远程方式dump数据。
配置为实际的ip地址的时候,就可以在任意一台机器上(前提是ip要通,不通都白瞎),通过ant xml或者api方式dump数据。

二、生成dump

java -jar D:\jacoco\test\jacoco-0.8.8\lib\jacococli.jar dump --address localhost --port 6301 --destfile D:\jacoco\test\jacoco.exec --reset

执行后,将在目录下生成指令中指定的 exec 文件 jacoco.exec


image.png

注意!生成文件之前,先去执行接口自动化用例!

参数解读:
--reset: 生成覆盖率数据后,重置之前的统计,想要重新获取统计数据,需要删除之前生成的exec文件
--address: 运行jacocoagent.jar的主机IP
--port: 运行jacocoagent.jar的主机监控端口

三、将生成的文件转换成html

java -jar D:\jacoco\test\jacoco-0.8.8\lib\jacococli.jar report D:\jacoco\test\jacoco.exec --classfiles  D:\jacoco\services-edu-web\target\classes --sourcefiles D:\jacoco\services-edu-web\src\main\java --html D:\jacoco\test\report --name 实训平台

在指定文件生成报告


image.png

参数解读:
--name:html中的名称
--classfiles: 编译文件存放目录,maven 项目是target下
--sourcefiles: 原文件存放目录,maven项目是 src\main\java
-sourcefiles可以不传,不传的话,覆盖率报告到文件级的展示,再细,需要具体代码和行数就需要传sourcefiles
生成报告后,点击进入index.html可查看


image.png

结尾

通过以上步骤,大家就可以完成对自身接口自动化覆盖率的度量。
以上方法只是纯手工操作,通过以上原理,使用shell脚本可通过Jenkins流水线执行。
使用Jenkins的方式后续补充,此处一方面用于个人备忘,另一方面用于用手工方式大家理解精准测试中-接口自动化覆盖率方案的原理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容