iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >利用Jacoco怎么获取Java 程序代码执行的覆盖率
  • 183
分享到

利用Jacoco怎么获取Java 程序代码执行的覆盖率

2023-06-06 17:06:03 183人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关利用Jacoco怎么获取Java 程序代码执行的覆盖率,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Jacoco原理简介Jacoco通过修改喂给JVM的字节码来达

这篇文章将为大家详细讲解有关利用Jacoco怎么获取Java 程序代码执行的覆盖率,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Jacoco原理简介

Jacoco通过修改喂给JVM的字节码来达到获取那些代码执行了的目的。修改方式有两种,一种在线(on-the-fly),是通过Java agent,在JVM执行字节码之前动态对其进行修改,这种方式更灵活,也是Jcoco的一大特性。另一种是离线(offline)模式,在Java程序字节码文件(.class文件)生成之前进行修改,这样的字节码就不纯了。一般在无法使用on-the-fly方式的时候才使用offline方式。

使用Jacoco生成代码执行覆盖率报告

接下来通过一个实验介绍如何使用Jacoco获取一个JAVA WEB应用代码的执行率。就拿Tomcat自带的example应用来做实验,我们在启动Tomcat时带上Jacoco的Java agent;然后在页面上做一些点击操作,触发后台Java代码的执行;再抓取包含执行情况数据,放到.exec的二进制文件中;最后由这些二进制文件生成html格式的报告,验证被覆盖的代码是否和我们点击的内容相关。

下载Jacoco(https://www.jacoco.org),解压缩。

下载Tomcat(Https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/ 清华mirror),然后解压缩,进入bin目录,找到catalina.bat文件(windows)。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

修改如下代码,让Tomcat在启动时带上Javacoco的agent。

set "JAVA_OPTS=%JAVA_OPTS% %jsSE_OPTS%"

修改为

set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -javaagent:C:\Users\Robot\Application\jacoco-0.8.5\lib\jacocoagent.jar=destfile=jacoco.exec,output=tcpserver"

其中指定了javaagent是C:\Users\Robot\Application\jacoco-0.8.5\lib\jacocoagent.jar,解压Jacoco可以得到;指定了output是tcpserver,也就是需要通过访问一个地址才能获取到数据。默认地址是本地IP地址,端口号是6300。其它参数说明见:https://www.jacoco.org/jacoco/trunk/doc/agent.html。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

设置完成之后,双击Tomcat bin目录下的startup.bat,启动Tomcat。控制台可以看见javaagent设置生效。此时Jacoco就可以动态地拦截喂给JVM的字节码,并且监听6300端口号和所以本机地址,等待获取代码执行情况数据(暂且称为.exec文件数据)的请求。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

输入地址http://127.0.0.1:8080/ ,打开Tomcat 欢迎页面,做一些点击操作,可以确定它已经执行了一些字节码。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

获取执行情况数据,在jacococli.jar所在目录(与jacocoagent.jar目录一致)执行命令:

java -jar jacococli.jar dump --port 6300 --destfile data/jacoco-it.exec

Jacoco会在当前目录下生成data/jacoco-it.exec文件,这个文件是一个二进制文件,我们无法直接查看它,需要用它生成html或者其它格式的文件。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

执行如下命令生成html报告。--classfiles制定应用程序的class文件所在目录,--html指定html报告所在目录。

java -jar jacococli.jar report data/jacoco-it.exec --classfiles C:/Users/Robot/Application/apache-tomcat-9.0.29/WEBapps/examples/WEB-INF/classes --html html

利用Jacoco怎么获取Java 程序代码执行的覆盖率

打开html目录下的index.html文件就可以看到报告了。

利用Jacoco怎么获取Java 程序代码执行的覆盖率

关于利用Jacoco怎么获取Java 程序代码执行的覆盖率就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 利用Jacoco怎么获取Java 程序代码执行的覆盖率

本文链接: https://www.lsjlt.com/news/247979.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Jacoco怎么获取Java 程序代码执行的覆盖率
    这篇文章将为大家详细讲解有关利用Jacoco怎么获取Java 程序代码执行的覆盖率,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Jacoco原理简介Jacoco通过修改喂给JVM的字节码来达...
    99+
    2023-06-06
  • Java中jdk提供的类怎么利用endorsed进行覆盖
    这篇文章将为大家详细讲解有关Java中jdk提供的类怎么利用endorsed进行覆盖,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言在之前我们分析 Tomcat catalina.bat ...
    99+
    2023-05-31
    jdk endorsed java
  • 怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践
    这期内容当中小编将会给大家带来有关怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于一个持续开发的大型...
    99+
    2024-04-02
  • 怎么将java代码生成可执行程序
    要将Java代码生成可执行程序,可以按照以下步骤进行操作: 编写Java代码文件:使用文本编辑器(如Notepad++、Subl...
    99+
    2023-10-24
    java
  • 字节码文件怎么利用java进行获取
    字节码文件怎么利用java进行获取?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java 获取字节码文件的几种方法总结其具体思想及代码如下所示:public class P...
    99+
    2023-05-31
    java 字节码 ava
  • 餐饮行业怎么利用小程序获取用户
    小编给大家分享一下餐饮行业怎么利用小程序获取用户,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1,服务模式上的提升餐饮门店对于自家菜品的宣传自然是必不可少的,通过小程序作为线上菜品宣传主要端口,可以有效而且直观的向用户呈现...
    99+
    2023-06-27
  • 怎么在java中利用多线程执行多个程序
    这期内容当中小编将会给大家带来有关怎么在java中利用多线程执行多个程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于...
    99+
    2023-06-14
  • 怎么利用python执行txt文件中的代码
    这篇文章主要为大家展示了“怎么利用python执行txt文件中的代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么利用python执行txt文件中的代码”这篇文章吧。前言:我们知道,pyth...
    99+
    2023-06-29
  • java利用Future实现多线程执行与结果聚合的代码怎么写
    java利用Future实现多线程执行与结果聚合的代码怎么写,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。场景网站智能问答场景,需要对多个分类查询,结果聚合展示由于每种分类...
    99+
    2023-06-22
  • Java中多线程对运行结果怎么利用future获取
    Java中多线程对运行结果怎么利用future获取?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Future接口是Java标准API的一部分,在java.util.conc...
    99+
    2023-05-31
    java 多线程 future
  • 怎么使用shell获取进程名的内存及CPU利用率
    这篇文章主要介绍“怎么使用shell获取进程名的内存及CPU利用率”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用shell获取进程名的内存及CPU利用率”文章能帮助大家解决问题。原理:1)使...
    99+
    2023-06-30
  • 服务器的真实IP怎么利用java进行获取
    这篇文章将为大家详细讲解有关服务器的真实IP怎么利用java进行获取,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现代码:import java.io.BufferedReader;imp...
    99+
    2023-05-31
    java ava ip
  • 微信小程序怎么获取用户的手机号码
    微信小程序中获取用户手机号码的方式有:1.用户页面通过弹出获取;2.在小程序制作页面中,添加登录选项卡,用于获取用户手机号码;微信小程序中获取用户手机号码的方式有以下两种当用户进入小程序后,通过弹出获取手机号提醒,用户点击授权,即可获得用户...
    99+
    2024-04-02
  • Java中的子文本怎么利用正则表达式进行获取
    Java中的子文本怎么利用正则表达式进行获取?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体方法如下:package cn.mingyuan.regexp.singlec...
    99+
    2023-05-31
    java 正则表达式 ava
  • java程序的jar包怎么利用shell脚本运行
    这篇文章将为大家详细讲解有关java程序的jar包怎么利用shell脚本运行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序...
    99+
    2023-05-31
    shell java jar
  • 客户端的IP地址与MAC地址怎么利用Java进行获取
    这篇文章将为大家详细讲解有关客户端的IP地址与MAC地址怎么利用Java进行获取,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.获取客户端IP地址public String getIp(H...
    99+
    2023-05-31
    java ip地址 mac地址
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作