Jacoco代码覆盖率测试

news2024/11/20 13:28:48

​欢迎光临我的博客查看最新文章: https://river106.cn

1、简介

JaCoCo(Java Code Coverage)是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中。
很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins。

官网:https://www.jacoco.org/
github:https://github.com/jacoco/jacoco

2、下载

下载地址:https://www.jacoco.org/jacoco/
版本:jacoco-0.8.10
解压后在lib文件夹下找到jacocoagent.jar和jacococli.jar。

3、功能测试覆盖率

对JavaWeb项目进行覆盖率测试

3.1、启动jacoco agent进行插桩

vm参数配置javaagent

-javaagent:/Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacocoagent.jar=includes=*,output=tcpserver,port=8899,address=127.0.0.1

关键参数说明:

-javaagent:/Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacocoagent.jar=includes=*,这个参数就是启用jacoco代理参数,其中/Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacocoagent.jar就是之前下载jacoco解压后的jacocoagent.jar的绝对路径,includes表示对要插桩的包进行过滤,代表所有的class都要进行插桩,也可以根据情况进行过滤,如includes=com.example.
output=tcpserver,这里不需要改动,表示以TCP Server方式启动应用并插桩;
port=8899,Jacoco开启的TCP Server的端口,不能被占用;
address=127.0.0.1,对外开放的地址,可以指定IP地址;

启动web服务.

或使用java -jar方式运行Web服务

java -javaagent:/Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacocoagent.jar=includes=*,output=tcpserver,port=8899,address=127.0.0.1  springboot-demo.jar

访问web应用(测试功能)。

3.2、dump生成覆盖率文件

保持服务启动,再打开一个cmd窗口同样cd到target目录,从上一步开启的TCP Server中dump出覆盖率文件,执行如下命令:

java -jar /Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacococli.jar dump --address localhost --port 8899 --destfile ./jacoco_web.exec

参数说明:

–destfile ./jacoco_web.exec,其中jacoco_web.exec为生成exec文件名,表示在当前目录生成;
其他参数和上一步类似,不再特别说明,注意需要更新jacococli.jar的绝对路径;
执行成功后,会在target目录生成相应的.exec文件;

分析exec文件生成html报告
dump命令生成的.exec文件为二进制文件,需要进行解析,以生成html报告为例,执行如下的命令分别将两个.exec文件解析成html报告

java -jar /Users/river106/Software/jacoco/jacoco-0.8.10/lib/jacococli.jar report ./jacoco_web.exec --classfiles .\classes --sourcefiles ..\src\main\java --html report01

参数说明:

./jacoco_web.exec,表示要解析的exec文件的相对路径
–classfiles .\classes,需要指定生成的classes文件目录
–sourcefiles …\src\main\java,需要指定源码的文件目录

最终,target目录会生成report01目录,打开其中的index.html查看代码覆盖率结果。
在这里插入图片描述

Jacoco是从代码指令(Instructions, Coverage),分支(Branches, Coverage),圈复杂度(Cyclomatic Complexity),行(Lines),方法(Methods),类(Classes)等维度进行分析的。

红色进度条表未覆盖,绿色进度条表示已覆盖,Cov为总体覆盖率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式之结构型-装饰器模式

目录 一、基本概念 二、角色设计 三、代码实现 四、总结 一、基本概念 装饰器模式是指不必在改变原有的类和不使用继承的情况下,动态扩展一个对象的功能。 二、角色设计 角色描述抽象构件是一个接口或者抽象类,定义我们最核心的对象基础构件抽象构…

GD32 SPI 查询方式和DMA方式在全双模式下效率区别

最近在使用SPI的时候,遇到了一些数据传输效率问题,在此记录自己学习过程。SPI的基础知识这里就不在讲述了,直接分析SPI查询方式和DMA方式的效率问题。这里使用的芯片是GD32F303CC。 SPI以查询方式进行全双工通信 1.查询手册,SPI…

java——网络编程

文章目录 网络通信协议1. TCP/IP协议2. HTTP协议 Socket编程1.创建Socket对象2.获取输入输出流3.发送数据4.接收数据5.关闭Socket连接 NIO编程1.创建Channel2.创建Buffer3.从Channel中读取数据4.写入数据到Channel中5.关闭Channel和Stream Java网络编程是使用Java语言实现计算机…

Spark7-9

7. Spark中的一些重要概念 7.1 Application 使用SparkSubmit提交的个计算应用,一个Application中可以触发多次Action,触发一次Action产生一个Job,一个Application中可以有一到多个Job 7.2 Job Driver向Executor提交的作业,触发…

没想到,老刘是逃离北上广的那波人

我今天跟老刘调试的时候,我问了老刘一个问题——我问你工作这么久了,有没有遇到什么可以让你财富自由的机会。 老刘那个时候正在焊板子,背着我,他抬起头又低了下去,然后说「我是有一次机会了,但是没有抓住&…

MySQL-SQL存储函数以及触发器详解

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

PyTorch翻译官网教程3-DATASETS DATALOADERS

官网链接 Datasets & DataLoaders — PyTorch Tutorials 2.0.1cu117 documentation 数据集和数据加载器 处理样本数据的代码可能会变得混乱并且难以维护。理想情况下,我们希望我们的数据集代码与模型训练代码解耦,以获得更好的可读性和模块化。PyT…

轻松了解工作与学习必备的版本控制+Git,全程舒适~

目录 一、版本控制 二、版本控制器 三、Git 四、项目实操 第一步 在github上创建一个新的远程仓库 第二步 克隆到本地文件夹 第三步 IDEA(PyCharm为例)集成Git 一、版本控制 概念:版本控制是指对软件开发过程中各种程序代码、配置文件…

【spring cloud学习】4、创建服务提供者

注册中心Eureka Server创建并启动之后,接下来介绍如何创建一个Provider并且注册到Eureka Server中,再提供一个REST接口给其他服务调用。 首先一个Provider至少需要两个组件包依赖:Spring Boot Web服务组件和Eureka Client组件。如下所示&…

ADRC自抗扰控制(CODESYS平台完整源代码)

博途PLC ADRC完整源代码请参考下面文章链接: 博途PLC ADRC自抗扰控制完整SCL源代码_adrc控制算法代码_RXXW_Dor的博客-CSDN博客关于自抗扰控制框图可以参看专栏的其它文章,这里不再讲解具体算法过程,详细了解也可以参看韩京清研究员写的 《ADRC自抗扰》一书。_adrc控制算法…

基于混合策略的改进哈里斯鹰优化算法-附代码

基于混合策略的改进哈里斯鹰优化算法 文章目录 基于混合策略的改进哈里斯鹰优化算法1.哈里斯鹰优化算法2.改进哈里斯鹰优化算法2.1 Sobol 序列初始化种群2.2 limit 阈值执行全局搜索阶段2.4 动态反向学习 3.实验结果4.参考文献5.Matlab代码6.python代码 摘要:针对原…

ElasticSearch-Kibana的安装

Kibana的安装 什么是ELK? ELK是Elasticsearch,Logstash,Kibana三大开源框架首字母大写简称,ELK属于大数据,是拆箱即用的,上手比较快 什么是Kibana? Kibana是一个针对ES的开源分析以及可视化平台,用来搜索,查看交互存储在ES索引中的数据,使用Kibana可以通过各类图标进行高级…

Flink(1)-概述

1.1 Apache Flink是什么? 在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎Apache Spark,…

SpringBoot第14讲:SpringBoot 如何统一异常处理

SpringBoot第14讲:SpringBoot 如何统一异常处理 本文是SpringBoot第14讲,SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢 文章目录 Sp…

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例外的是,他们想…

网络安全就业前景如何?是否还能入行?

网络安全专业是2015年新设立的专业,作为新兴专业吸引了很多人准备入行,那么它的就业前景怎么样?大致可以分为3个版块来介绍。 1.就业领域前景广阔 目前互联网、通信、新能源、房地产、金融证券、电子技术等行业迫切需要网络安全人才&#x…

22. 算法之图的最短路径

前言 关于图的最短路径问题,是图这种数据结构中的经典问题。也是与我们的生活息息相关的,比如上海四通八达的地铁线路,从一个地铁站,到另一个地铁站,可能有很多种不同的路线。那么,我们选哪种路线&#xf…

JavaFX第五篇 Image图片加载处理

JavaFX第五篇 Image图片加载处理 1. 代码2. 讲解3. 代码仓 图片已经成为每个网站的必备了,不仅可以提升个人网站的标识度而且还可以美化网站, 所以这里需要讲解一下如何加载图片,展示到前台给用户查看。 本次只是简单的讲解如何展示使用&…

【算法证明 七】深入理解深度优先搜索

深度优先搜索包含一个递归,对其进行分析要复杂一些。与上一篇文章一样,还是给节点定义几个状态,然后详细分析深度优先搜索算法有哪些性质。 算法描述 定义状态 v . c o l o r :初始状态为白色,被发现时改为灰色&…

Mysql的SQL性能分析【借助EXPLAIN分析】

性能分析 要说sql有问题,需要拿出证据,因此需要性能分析 Mysql查询优化器(Mysql Query Optimizer) Mysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息&#xf…