Java代码覆盖率工具之Jacoco
Java代码覆盖率工具之Jacoco
JaCoCo(Java Code Coverage)是一款面向Java语言的开源代码覆盖率工具,以其小型化和轻量化著称。它能够提供代码在测试过程中的覆盖率信息,帮助开发人员和测试人员识别未测试的代码部分,从而提高代码质量和测试的完整性。JaCoCo
可以嵌入到Ant
、Maven
等构建工具中,也可以作为Eclipse
插件使用,或者通过JavaAgent
技术监控Java程序。
一、工作原理
JaCoCo通过对Java字节码进行插桩来收集覆盖率信息。插桩有两种主要方式:离线(offline)和在线(on-the-fly)。
- 离线模式:在编译时对代码进行插桩,生成插过桩的class或jar包。在测试这些插过桩的文件后,生成动态覆盖信息文件,最后统一处理这些覆盖信息并生成报告。
- 在线模式:在应用启动时加入JaCoCo agent进行插桩,实时地进行代码覆盖率分析。这种方式适用于开发和测试人员在使用应用期间进行覆盖率监测。
JaCoCo在执行测试用例时收集程序执行轨迹信息,并通过数据处理器结合程序执行轨迹信息和代码结构信息生成代码覆盖率报告。这些报告可以以html、xml等格式展示,便于开发人员和测试人员查看和分析。
二、在线模式
下载Jacoco:首先,您需要从官网下载Jacoco的最新版本。
可以从Jacoco的官方网站下载最新版本的Jacoco安装程序。
首先,解压缩已下载的JaCoCo安装程序:
unzip jacoco-0.8.12.zip
接下来,使用以下命令来启动应用程序并插桩:
java -javaagent:/opt/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6333,address=localhost,append=true -jar /opt/IAM_JAVA/IAM/src/MyApp.jar
命令说明:
/opt/jacoco/lib/jacocoagent.jar
:JaCoCo代理JAR文件的安装目录。output=tcpserver
:表示以TCP服务器模式启动应用程序并进行插桩。port=6333
:JaCoCo TCP服务器的端口号(注意:原文中端口号为6333,但此处已更正为6300,以保持与命令中的端口号一致)。address=localhost
:TCP服务器的访问地址,可以配置为127.0.0.1或实际访问的IP地址。/opt/IAM_JAVA/IAM/src/MyApp.jar
:要运行的应用程序JAR文件。
在应用程序运行期间,使用以下命令生成覆盖率文件:
java -jar /opt/jacoco/lib/jacococli.jar dump --address localhost --port 6333 --destfile /opt/IAM_JAVA/IAM/jacoco.exec
最后,使用以下命令生成HTML格式的覆盖率报告:
java -jar /opt/jacoco/lib/jacococli.jar report /opt/IAM_JAVA/IAM/jacoco.exec --classfiles /opt/IAM_JAVA/IAM/src/bin --sourcefiles /opt/IAM_JAVA/IAM/src --html /opt/IAM_JAVA/IAM/report01
命令说明:
/opt/IAM_JAVA/IAM/jacoco.exec
:覆盖率文件。/opt/IAM_JAVA/IAM/src/bin
:包含编译后的类文件的目录。/opt/IAM_JAVA/IAM/src
:包含Java源文件的目录。/opt/IAM_JAVA/IAM/report01
:生成的HTML报告的输出路径。
完成上述步骤后,您可以访问生成的index.html文件来查看覆盖率报告。报告将展示应用程序的代码覆盖率情况,如图所示。
Java代码覆盖率工具之Jacoco的更多相关文章
- JAVA代码覆盖率工具JaCoCo-原理篇
JAVA代码覆盖率工具JaCoCo-原理篇 1.2 JAVA覆盖率工具介绍 1.3.3 Apache Maven方式 1.3.4 Eclipse EclDmma Plugin方式 JAVA代码覆盖率工 ...
- Java开发工具IntelliJ IDEA单元测试和代码覆盖率图解
原文 http://www.cnblogs.com/xiongmaopanda/p/3314660.html Java开发工具IntelliJ IDEA使用教程:单元测试和代码覆盖率 本文将展示如何使 ...
- 【转】高效Java编程工具集锦
原文地址:http://geek.csdn.net/news/detail/57469 Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高 ...
- Java开发工具安装步骤内容如下
Java开发工具安装步骤内容如下 安装 开发工具 STS 链接下载网址 eclipse 链接下载网址 JDK安装 jdk链接下载地址 Marven环境 marven链接下载地址 Tomcat tomc ...
- C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)
关于代码覆盖率统计工具,Linux平台下,gcc内置支持gcov,通过编译时加参数选项,进行代码插桩,从而实现代码覆盖率.在Windows平台下,早在几年前,我还没找到特别好用又开源的覆盖率工具,所以 ...
- JAVA开发工具eclipse中@author怎么改
1:JAVA开发工具eclipse中@author怎么改,开发的时候为了注明版权信息. 用eclipse开发工具默认的是系统用户,那么怎么修改呢 示例如图所示 首先打开Eclipse--->然后 ...
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java测试工具
1. 开源测试工具: http://www.open-open.com/43.htm 2. 10款常用的JAVA测试工具 :http://developer.51cto.com/art/200 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- 学习java随笔第二篇:java开发工具——Eclipse
java开发工具有很多这里我使用的是Eclipse. 首先我在官网上下载了Eclipse的软件包,下载地址:http://www.eclipse.org/downloads/,然后有在网上找了一个汉化 ...
随机推荐
- SQL排序分组
--按某一字段分组取最大(小)值所在行的数据(2007-10-23于浙江杭州) /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3: ...
- ArcGIS遥感影像重采样操作及不同算法对比
本文介绍在ArcMap软件中,实现栅格图像重采样的具体操作,以及不同重采样方法的选择依据. 在之前的博客中,我们介绍了基于Python中Arcpy模块对栅格图像加以批量重采样的方法:而在Arc ...
- spymemcached源码深入分析
spymemcached深入分析 author:智深 version:0.7 日志:http://my.oschina.net/astute QQ:2548921609(技术交流) 一.简介 spym ...
- java动态跟踪分析工具BTrace实现原理
今天,Team Leader推荐了一个非常棒的动态跟踪分析工具 – BTrace.由于对它的实现原理非常感兴趣,于是花了点时间研究了一下,顺便写点心得. 什么是BTrace? BTrace是SUN K ...
- 解决GitHub无法访问问题
作为开发者,经常使用借助GitHub进行开发,但是最近一直无法访问github.com站点,决定搞一下!!! 由于国内某些原因,导致我们有时候不能访问到 www.github.com.此时我们必须找到 ...
- ContosoRetailDW数据库恢复问题
https://www.microsoft.com/en-us/download/details.aspx?id=18279 下载 ContosoBIdemoBAK.exe和ContosoBIdemo ...
- 2022-2023 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2022)
F. Foreign Football 一共有\(n\)支队伍,每支队伍的名称为\(s_i\),给定一个\(n \times n\)的矩阵,\(a_{i,j}\)代表第\(i\)支队伍和第\(j\)支 ...
- log4j2 变量注入漏洞(CVE-2021-44228)
log4j2 JNDI注入漏洞(CVE-2021-44228) 概述 本文非常详细的从头到尾debug了CVE-2021-44228漏洞的利用过程,喜欢的师傅记得点个推荐~ Apache Log4j2 ...
- MybatisPlusException: can not find lambda cache for this entity[]异常解决
文章目录 场景说明 解决方案 场景说明 简单来说,我们系统中许多数据都是树状结构的,所以我定义了一个实体类父类BaseTreePO,并且想封装一个通用的树状对象的Service类,部分代码如下: ...
- Qt编写物联网管理平台40-类型种类
一.前言 为了增强本系统的拓展性,做成通用的物联网管理平台,特意将控制器主设备类型.探测器子设备类型.对应种类符号等信息,全部做成表格可自定义添加和修改,这样在控制器信息表和探测器信息表管理的时候,可 ...