首页 > 编程语言 >用jacoco统计JAVA项目测试代码覆盖率

用jacoco统计JAVA项目测试代码覆盖率

时间:2024-01-13 19:56:23浏览次数:24  
标签:JAVA 覆盖率 jar -- 测试代码 java com jacoco

一、概述

Jacoco 统计的是全量代码覆盖率。它不仅支持生成单元测试的覆盖率,也支持监控生成接口测试,功能测试的覆盖率。

在新一代精准测试技术流的影响中,各大型单位对覆盖率的追求越来越迫切。作为一款开源产品,它主机面向Java语言,能够在字节码层面给出覆盖率,同时也能将字节码关联到对应的源代码。这种半精准的测试方式,在小型团队中,对于某些场景的覆盖率诉求,起到了一定的响应。但它也有很强的局限性,尤其在支撑大型系统应用中,其表现能力弱,准确率不够达标。

不同的编程语言有不同的技术去实现代码覆盖统计,如JAVA的Jacoco ,C++的Testwell ,Python的Coverage.Py 等等。

二、下载

下载后随意放在一个目录,解压即可。

官网地址:http://eclemma.org/jacoco/

三、java命令直接使用配置

1、java运行

java -javaagent:/temp/jacocoagent.jar=includes=com.java2nb,*,output=tcpserver,port=6363,address=192.168.1.8,append=true -jar novel-front-3.5.4.jar

配置参数:

includes:你要统计哪些包里面的代码
output:统计数据以什么形式导出
port和address:访问这个导出服务的 ip和端口

2、使用 jacococli.jar 拉取代码覆盖率统计信息 (从应用服务器上面拉数据),即生成acoco_test.exec文件

java -jar /temp/jacococli.jar dump --address 192.168.1.8 --port 6300 --destfile ./jacoco_test.exec

3、使用 jacococli.jar 分析代码覆盖率统计信息 (输出一个html报告形式)

java -jar /temp/jacococli.jar report ./jacoco_test.exec --sourcefiles D:\work\src\main\java --classfiles D:\work\target\classes --html ./report_test --encoding utf-8

4、在report_test目录下,打开index.html文件查看报告

 

分析报告:
Element - 代码包
Instructions Cov(看这个数值低,即很多代码没被执行)

 

四、tomcat中配置

 1、关闭tomcat的服务,修改 catalina.sh 的JAVA_OPTS配置

# -javaagent: 的后面跟jacoco的安装路径
# includes= 选项,选择你要覆盖率的服务
# port= 选项,选择你要打开的端口,和你tomcat的服务端口要不一样,即是一个其他人未占用的端口
# address= 选项,tomcat服务所在机器的ip地址(如果想在跟tomcat服务同一台机器上执行ant任务的话,需要改为127.0.0.1)
JAVA_OPTS="-javaagent:$jacoco_path/lib/jacocoagent.jar=includes=com.netease.yourserver.*,output=tcpserver,address=xx.xx.xx.xx,port=12345"

 2、启动服务,如果发现启动主程序异常,那么在JAVA_OPTS 配置中再加一项-Xverify:none

五、分析结果注意

测试没有覆盖到的地方,有如下几种可能

1、测试用例设计不完善
2、用例执行者执行时漏测
3、开发人员没删除废弃的代码功能

 

参考:

https://juejin.cn/post/6907552109915275277 https://www.jianshu.com/p/c6fafb50b07a?clicktime=1577953523 https://www.sohu.com/a/498359940_120941200 https://it.sohu.com/a/696322070_120635785 https://www.cnblogs.com/xiao2shiqi/p/16370471.html https://www.cnblogs.com/liuyitan/p/15716027.html 滴滴开源Super-jacoco:java代码覆盖率收集平台: https://www.hctestedu.com/live_pc/l_65a0df5ee4b064a8fbe4a31e

 

标签:JAVA,覆盖率,jar,--,测试代码,java,com,jacoco
From: https://www.cnblogs.com/rmticocean/p/17962625

相关文章

  • NUS CS1101S:SICP JavaScript 描述:四、元语言抽象
    原文:4MetalinguisticAbstraction译者:飞龙协议:CCBY-NC-SA4.0...魔法就在于文字——Abracadabra,开门,以及其他——但一个故事中的魔法词在另一个故事中并不神奇。真正的魔法是理解哪些词起作用,何时起作用,以及为什么起作用;诀窍就是学会这个诀窍。...而这些词是由我们字母表......
  • NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算
    原文:5ComputingwithRegisterMachines译者:飞龙协议:CCBY-NC-SA4.0我的目标是表明天堂机器不是一种神圣的生命体,而是一种钟表(相信钟表有灵魂属性的人将制造者的荣耀归功于作品),因为几乎所有多种运动都是由一种最简单和物质力量引起的,就像钟表的所有运动都是由单一重力引起......
  • NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢
    前言原文:Foreword译者:飞龙协议:CCBY-NC-SA4.0我有幸在我还是学生的时候见到了了不起的AlanPerlis,并和他交谈了几次。他和我共同深爱和尊重两种非常不同的编程语言:Lisp和APL。跟随他的脚步是一项艰巨的任务,尽管他开辟了一条优秀的道路。尽管如此,我想重新审视他在这本书......
  • NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态
    原文:3Modularity,Objects,andState译者:飞龙协议:CCBY-NC-SA4.0变化中安宁(即使它在变化,它仍然保持不变。)——赫拉克利特变化越大,越是相同。——阿方斯·卡尔前面的章节介绍了构成程序的基本元素。我们看到了原始函数和原始数据是如何组合成复合实体的,我们也了解......
  • Java Web中文乱码的问题
    本编文章列举了JavaWeb编程中所有可能导致中文乱码的问题以及解决方法1、html页面乱码首先第一点便是html页面乱码问题例如:此时我们需要在项目中找到该网页的html文件,在html文件头部中找到metacharset="";然后将meta中的charset改为charset="UTF-8"如下图示:2、request乱码在debug......
  • Java使用modbus4j通过串口modbus-rtu协议 连接设备 demo
    前言项目中需要使用串口来连接操控烟雾报警器且只能使用modbus-rtu协议在找了一堆资料后终于成功了在此呈上代码和资料链接【ModBus】modbus之modbus4j的使用和流程原理解析(5)-CSDN博客使用modbus4j通过串口解析modbus协议(java)_javamodbus4j-CSDN博客 串口通讯需要使用modbus4j......
  • 《Java编程思想第四版》学习笔记54--关于UncaughtExceptionHandler
    Java中在处理异常的时候,通常的做法是使用try-catch-finally来包含代码块,但是Java自身还有一种方式可以处理——使用UncaughtExceptionHandler。它能检测出某个线程由于未捕获的异常而终结的情况。当一个线程由于未捕获异常而退出时,JVM会把这个事件报告给应用程序提供的UncaughtExce......
  • Java实现在线编辑预览office文档
    目录1在线编辑1.1PageOffice简介1.2前端项目1.2.1配置1.2.2页面部分1.3后端项目1.3.1pom.xml1.3.2添加配置1.3.3controller2在线预览2.1引言2.2市面上现有的文件预览服务2.2.1微软2.2.2GoogleDrive查看器2.2.3阿里云IMM2.2.4XDOC文档预览2.2.5OfficeWeb3652......
  • Head First Java(第二版·中文版)PDF
    《HeadFirstJava》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。而且不只是读死书,你还会玩游戏、......
  • Effective Java中文版(第3版)PDF
    本书一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。全书以一种比较松散的方式将这些条目组织成11章,每一章都涉及软件设计的一个主要方面。因此,本书并不一定需要按部就班地从头读到尾,因为每个条目都有一......