Jacoco代码覆盖率 - 代码染色

元宵节快乐
在这里插入图片描述
插画来自网络

前言

如何使用命令行使用Jacoco进行代码染色

Jacoco简介

Jacoco是一种为Java VM的环境中的代码覆盖率分析提供的标准技术,重点是提供一个轻量级,灵活且文档齐全的库,以便于和各种构件和开发工具集成,比如当下非常流行的工具:Gradle、IDEA、Jenkins、SonarQube等等,我们可以使用这些工具完成一系列的自动化及代码覆盖率分析统计。

JaCoCo使用类文件工具来记录执行覆盖率数据。使用所谓的Java代理即时检测类文件。这种机制允许在类加载期间对所有类文件进行内存中的预处理,而与应用程序框架无关
JaCoCo代理收集执行信息并根据请求或在JVM退出时将其转储

特征

  • 指令(C0),分支(C1),行,方法,类型和圈复杂度的覆盖率分析。
  • 基于Java字节码,因此即使没有源文件也可以工作。
  • 通过基于Java的即时代理进行简单集成。其他集成方案(例如自定义类加载器)也可以通过API来实现。
  • 与框架无关的:与基于Java VM的应用程序(如纯Java程序,OSGi框架,Web容器或EJB服务器)平滑集成。
  • 与所有已发布的Java类文件版本兼容。
  • 支持不同 JVM语言。
  • 几种报告格式(HTML,XML,CSV)。
  • 远程协议和JMX控制可在任何时间点从coverage代理请求执行数据转储。
  • Ant任务,用于收集和管理执行数据并创建结构化的覆盖率报告。
  • Maven插件可收集覆盖率信息并在Maven构建中创建报告。

准备工作

  • jdk_1.8

  • 核心jar包 Click me1 | Click me2

      - org.jacoco.agent-0.8.5-runtime.jar  
      - org.jacoco.cli-0.8.5-nodeps.jar
    
  • 本次我们使用Jmeter来举例子,所以先下载一个相同版本的Jmeter和源码文件
    在这里插入图片描述

测试

  • 首先我们通过命令行启动Jmeter,下图看起来是可以正常启动的

      	- java -jar ApacheJMeter.jar
    

在这里插入图片描述

  • 利用代理启动系统在其运行时对其监控,在Jmeter启动后,我们在上面随意操作一些,比如建个线程组或者请求一下百度,再退出Jmeter后,我们可以在D:\temp\apache-jmeter-5.1.1\bin路径下发现生成了一个
    jacoco.exec文件

      -  可以使用以下JVM选项激活Java代理
      -  java -javaagent:D:\temp\org.jacoco.agent-0.8.5-runtime.jar -jar ApacheJMeter.jar (执行路径在jmeter的bin目录下)
    

在这里插入图片描述

  • 生成报告,通过读取exec和Java类文件生成不同格式的报告

      - java -jar jacococli.jar报告[<execfiles> ...] --classfiles <路径> [--csv <文件>] [-编码<charset>] [--help] [--html <dir>] [--name <名称>] [-安静] [-源文件<路径>] [--tabwith <n>] [--xml <文件>]
      - <execfiles>	要读取的JaCoCo * .exec文件列表
      - --classfiles <path>	Java类文件的位置
      - HTML报告的输出目录
      - --sourcefiles <path> 源文件的位置
    
- <Script>
java -jar org.jacoco.cli-0.8.5-nodeps.jar report jacoco.exec --classfiles D:\temp\apache-jmeter-5.4.1\bin\ApacheJMeter.jar --html jmeter_report/

命令执行后,可以在当前路径下 - D:\temp\apache-jmeter-5.4.1\bin\ 查看生成的jmeter_report文件夹下的Html文件
在这里插入图片描述

  • 查看代码染色情况,通过源代码参数 --sourcefiles 执行后可以得到源代码覆盖情况,清楚知道哪些代码或者逻辑没有测试到
java -jar org.jacoco.cli-0.8.5-nodeps.jar report jacoco.exec --classfiles D:\temp\apache-jmeter-5.4.1\bin\ApacheJMeter.jar --html jmeter_report2/ --sourcefiles D:\temp\jmeter\src\core

在这里插入图片描述

  • 扩展
    如果说所有的代码染色都是绿色的,那么能说明测试没问题了吗?当然不可能,即使所有代码都是绿色的,也不能保证,因为太多的逻辑很有可能是开发漏写了。

今天就到这,大家元宵节快乐
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值