首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏不想当开发的产品不是好测试

    jacoco初探

    通过javaagent方式去启动jacoco; 3. javaagent的方式可以用file,tcpserver、tcpclient三种模式,常用的是tcpserver格式 4. 挂载javagent后,可以利用ip:port来跟javaagent进行网络交互,生成exec文件,生成报告; # 细节 1. jacoco官网:https://www.eclemma.org/jacoco javaagent格式: -javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2] 更多参数:https://www.jacoco.org /jacoco/trunk/doc/agent.html  实际例子:-javaagent:/home/tools/jacocoagent.jar=includes=*,output=tcpserver 实际落地: 被测服务挂载javaagent --》执行自动化用例 --》 生成exec文件 --》 解析生成报告(被测服务器上生成exec文件) # 疑问 1. jacoco只支持时间段的代码覆盖率的统计

    3.7K30发布于 2018-10-22
  • 来自专栏JavaEdge

    JaCoCo官方教程

    同样,许多其他工具供应商和开源项目也将JaCoCo集成到了他们的工具中。 JaCoCo 提供的集成 Technology Documentation Remarks Java API JaCoCo JavaDoc Java Agent JaCoCo Manual Command Line Tools JaCoCo Manual Since version 0.8.0 Apache Ant JaCoCo Manual Apache Maven JaCoCo Manual Since 1.3 覆盖率计数器 - Coverage Counters JaCoCo使用一组不同的计数器来计算覆盖率指标。 JaCoCo根据分支数(B)和决策点数(D)使用以下等效方程式计算方法的圈复杂度: v(G)= B - D + 1 根据每个分支的覆盖状态,JaCoCo还可以计算每种方法的覆盖和遗漏复杂度。

    4.3K50发布于 2020-05-26
  • 来自专栏小工匠聊架构

    Spring Boot - JaCoCo Code Coverage

    如何集成 集成JaCoCo到你的Java项目中通常涉及以下几个步骤: 添加JaCoCo依赖: 对于Maven项目,你需要在pom.xml文件中添加JaCoCo的依赖。 文件中,需要配置JaCoCo插件的行为。 测试完成后,JaCoCo会生成覆盖率报告,通常在target/site/jacoco目录下(对于Maven项目)。 分析覆盖率报告: 打开生成的HTML报告,分析覆盖率数据。 使用JaCoCo的命令行工具(可选): 使用JaCoCo提供的命令行工具来生成报告,如jacoco coverage report。 可以配置命令行工具来与IDE或构建工具集成。 因此,建议查阅最新的JaCoCo官方文档 。

    1.5K11编辑于 2024-01-15
  • 来自专栏dongfanger

    SpringBoot接入JaCoCo实践教程

    静态接入和动态接入 SpingBoot可以通过2种方式接入JaCoCo:Maven和Agent。Maven方式是静态接入,在编译时计算代码覆盖率。 目录下就生成了覆盖率报告: Agent 下载jacoco文件后解压,提取2个文件: 使用命令启动SpringBoot,启动参数添加-javaagent: java -javaagent:jacoco HTML报告: java -jar jacoco/jacococli.jar report jacoco.exec --classfiles . 把report目录和jacoco.exec都删了,因为jacoco每次部署只能分析一次。把服务停掉后,重新启动。 这一次不直接分析,而是先用postman调一下接口: 然后再分析一把: 可以看到覆盖率变成100%,说明postman调接口这个操作,命中了代码,被jacoco统计到了。

    1.5K20编辑于 2022-05-09
  • 来自专栏开源优测

    java代码覆盖工具Jacoco

    什么是Jacoco Jacoco是一个开源的覆盖率工具。 官网地址:http://www.eclemma.org/jacoco/ Jacoco集成方式 Jacoco团队提供了如下的一些集成工具的支持: Java API http://www.eclemma.org Jacoco与jenkins集成 安装jacoco插件 ? Jenkins中构建参数 关键maven参数: ? org.jacoco:jacoco-maven-plugin:prepare-agent:命令行引用jacoco-maven-plugin插件,减少对开发源码的依赖。 Jacoco覆盖率报告 ?

    2.4K10发布于 2019-08-05
  • 来自专栏软件测试那些事

    Jacoco字节码插桩案例

    字节码注入与控制流 1 注入方式 JaCoCo是一个被广泛使用的JAVA覆盖率统计工具,它利用ASM库,通过注入字节码的方式来修改和生成java字节码,从而记录程序的执行数据,但它不会改变原有代码的行为 2 Probe探针组成 Jacoco是通过一个Probe探针的方式来注入的,探针是字节指令集插入到java方法中,程序执行后可以被记录,它不会改变原有代码的行为。 感兴趣的读者可以阅读以下链接了解更多 https://www.jacoco.org/jacoco/trunk/doc/flow.html 3 Probe探针插入策略 JaCoCo是根据控制流Type来采用不同的探针插入策略的 return.JPG 案例 以下案例来介绍IF/FOR/抛异常等场景下jacoco是如何进行注入的。 jacoco_for.JPG 3 Throw ? jacoco_throw.JPG 4 默认构造方法 ? jacoco_1类构造方法.JPG

    2.7K20发布于 2020-12-01
  • 来自专栏京东技术

    JaCoCo助您毁灭线上僵尸代码

    Jacoco本质上是一个测试覆盖率工具,通过ASM字节码增强技术在源代码中加入探针从而获取代码覆盖率。 Jacoco主要是通过Jave agent在main函数执行之前通过指定方法在执行的代码中加入探针来记录代码是否被执行过。 https://www.jacoco.org/jacoco/trunk/doc/index.html 04 实践步骤 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板, 在工程内的pom中引入jar依赖 <dependency> <groupId>org.jacoco</groupId> <artifactId>org.jacoco.ant</artifactId Reference 1.JaCoCo - Documentatio(https://www.jacoco.org/jacoco/trunk/doc/index.html) 2.javaagent使用指南

    63220编辑于 2023-10-31
  • 来自专栏JavaEdge

    JaCoCo 与Cobertura 的对比

    JaCoCo org.jacoco.core.internal.analysis包 ? 都差不多,公共的都支持分支,方法,类,包的覆盖率统计 1.2 核心结构 JaCoCo 方法指令的有状态生成器.一个方法的所有指令必须按照它们的原始顺序加上附加信息,如行号。 2.1 框架热插拔植入 JaCoCo 目前最为熟悉的框架,需要将功能完善的代码打成 jacocoagent.jar 后,通过JDK6 instrument API 热部署到客户程序中. Cobertura 和 jacoco 一样从 JDK5 开始设计的框架,都不支持热插拔,这里都需要需要改动 2.2 定时任务 都需要适配

    1.6K10发布于 2020-05-26
  • 来自专栏JavaEdge

    JaCoCo core.internal.flow包源码

    jacoco有对类级别,方法级别,逻辑分支级别以及代码行级别做了专门的处理封装。

    75210发布于 2020-05-26
  • 来自专栏Jacob

    jacoco-maven-plugin:prepare-agent

    jacoco-maven-plugin:prepare-agent [ERROR] Failed to execute goal org.jacoco:jacoco-maven-plugin:0.7.7.201606060606 :prepare-agent (default-cli) on project littlec-common: Execution default-cli of goal org.jacoco:jacoco-maven-plugin /jacoco-maven-plugin/0.7.7.201606060606/jacoco-maven-plugin-0.7.7.201606060606.jar [ERROR] urls[1] = :jacoco-maven-plugin:0.7.7.201606060606包没有导进来 解决:修改版本好为org.jacoco:jacoco-maven-plugin:0.8.0测试成功,成功之后版本号修改回来 org.jacoco:jacoco-maven-plugin:0.7.7.201606060606测试ok

    1.5K20发布于 2020-08-05
  • 来自专栏JavaEdge

    jacoco core.runtime包源码分析

    generateDataAccessor(long classid, String classname, int probecount, MethodVisitor mv); IRuntime 实现类 package org.jacoco.core.runtime

    69210发布于 2020-05-26
  • 来自专栏菩提树下的杨过

    mock测试及jacoco覆盖率

    二、pom引入mockito 及 jacoco plugin 2.1 引入mockito 1 <dependency> 2 <groupId>org.mockito</groupId> 3 2.2 引入jacoco插件 1 <plugin> 2 <groupId>org.jacoco</groupId> 3 <artifactId>jacoco-maven-plugin > 29 </execution> 30 </executions> 31 </plugin> jacoco可以将单元测试的结果,直接生成html网页,分析代码覆盖率。 注意 <outputDirectory>target/jacoco-ut</outputDirectory> 这一行的配置,表示将在target/jacoco-ut目录下生成测试报告。 排除的方法很简单,可jacoco插件里配置exclude规则即可,参考下面这样: <configuration> <dataFile>target/jacoco.exec</dataFile>

    4.9K20发布于 2020-09-11
  • 来自专栏无量测试之道

    Jacoco代码覆盖率统计

    Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。 很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。 本文使用的环境是:k8s+jenkins 构建的,其中涉及到了在node 节点机的容器中生成jacoco.exec 文件,然后将其拷贝到节点机,再从节点机将jacoco.exec 文件拷贝到jenkins /start.sh ---- step2: 用于在容器里定时生成jacoco.exec ,此jacoco.exec 文件是拿取的代码执行的情况文件所生成的一个exec文件----此文件仅仅是step1  /opt/test/jacoco.exec"  scp $pnip:/opt/test/jacoco.exec ./ else  echo "not found!"

    1.3K10编辑于 2022-07-04
  • 来自专栏JavaEdge

    Jacoco探针源码解析(0.8.5 版本)

    仓库,欢迎Star/fork: Java-Interview-Tutorial https://github.com/Wasabi1234/Java-Interview-Tutorial 1 jacoco ; import org.jacoco.core.runtime.AgentOptions; import org.jacoco.core.runtime.IRuntime; import org.jacoco.core.runtime.WildcardMatcher probeArrayStrategy); return new MethodInstrumenter(probeVariableInserter, probeVariableInserter); } 在jacoco * *******************************************************************************/ package org.jacoco.core.internal.flow 接着看看具体植入的是什么指令 org.jacoco.core.internal.instr.ProbeArrayStrategyFactory 工厂:用于寻找合适的策略来访问给定类的探针数组 createFor

    2.9K41发布于 2020-05-27
  • 来自专栏桃花源

    使用 JaCoCo 生成测试覆盖率报告

    那么这时就需要引入代码覆盖率这个东东了,要统计 C++ 的代码覆盖率有 GCover,统计 Java 的代码覆盖率则有 JaCoCo 可以实现。 ://www.jacoco.org/jacoco/trunk/doc/counters.html​​ 使用 JaCoCo 生成覆盖率时,可以使用 on-the-fly 方式,对程序的原代码是无侵入式的, 2.1 下载 JaCoCo 工具包 可以进入到官方页面下载 ​​https://search.maven.org/search? q=g:org.jacoco​​ 下载其中需要用到的两个包即可 Jacoco 工具包及被测试包如下 2.2 启动被测服务,并在启动语句中添加 JaCoCo 指定需要检查测试对代码覆盖情况的包名,采集 Jacoco覆盖率文件的ip及端口 java -javaagent:jacocoagent.jar=includes=com.test.

    2.3K60编辑于 2023-10-16
  • 来自专栏小二十七

    覆盖率检查工具:JaCoCo 食用指南

    一:概述 众所周知,软件的代码覆盖率是衡量软件质量的重要指标, 我们今天简单介绍 JaCoCo 的实际使用示例,它是目前在大多数 Java 项目中应用最广泛的覆盖率检测框架 更多资料参考:JaCoCo 官网 二:引入 Maven 依赖 在 Java 项目中为了方便使用 JaCoCo,我推荐使用它提供的这款 Maven Plngin,在你的 pom.xml 加入依赖: <plugin> <groupId >org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${lacoco-last-version 3.x+ 你的项目必须包含合理单元测试 在你项目在执行命令: $ mvn clean install # 发布构建到你的本地 Maven 仓库 当项目编译完成后,在项目目录:target/site/jacoco /jacoco.xml 文件中,jacoco.xml 结合 SonarQube 等工具使用会有更好的覆盖率报告展示效果,不过这是后话,后面有机会再聊 我们简单说明以上三种颜色是怎么回事: 红色标记:表示代码块没有被测试的代码

    1.8K30编辑于 2022-11-11
  • 来自专栏无量测试之道

    快速使用 Jacoco 代码覆盖率统计

    简介 Jacoco 是一个开源的覆盖率工具。 很多第三方的工具提供了对 Jacoco 的集成,如 sonar、Jenkins 等。 今天分享使用的环境是: k8s+jenkins 构建的,其中涉及到了在 node 节点机的容器中生成 jacoco.exec 文件,然后将其拷贝到节点机,再从节点机将 jacoco.exec 文件拷贝到 /opt/test/jacoco.exec" scp $pnip:/opt/test/jacoco.exec ./ elif [ $pnip == '192.168.214.56' ];then /opt/test/jacoco.exec" scp $pnip:/opt/test/jacoco.exec ./ else echo "not found!"

    1.6K10编辑于 2022-07-05
  • 来自专栏dongfanger

    JaCoCo增量覆盖率的基本实现原理

    基本实现原理 使用JaCoCo的On-the-fly模式,以tcpserver方式启动,将远程机器的覆盖率数据通过TCP通信dump到本地jacoco.exec文件,二次开发JaCoCo源码,实现增量覆盖率分析和输出 启动脚本示例: java -javaagent:jacocoagent.jar -jar target/app.jar 默认情况下,JaCoCo会在JVM停掉以后,生成覆盖率数据,一个jacoco.exec 的org.jacoco.core和org.jacoco.report两个包提供了这些方法。 JaCoCo默认只能分析全量覆盖率。 改造JaCoCo支持增量 改造的底层逻辑是,在分析覆盖率数据时,class文件只选取git diff的文件,从而只统计差异的增量代码,实现增量覆盖率。 JaCoCo - Java Agent https://www.jacoco.org/jacoco/trunk/doc/agent.html JaCoCo - API Usage Examples https

    4.4K11编辑于 2022-11-28
  • 来自专栏孟君的编程札记

    Maven工程配置代码覆盖工具Jacoco

    本篇博文我们将给出示例理解如何在Maven工程中配置Jacoco和如何使用Jacoco查看代码覆盖报告。 Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。 很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。 D:\\java_tools\\Reponsitories\\Maven\\org\\jacoco\\org.jacoco.agent\\0.7.5.201505241946\\org.jacoco.agent 4.2 查看Jacoco报告 打开浏览器,在URL栏输入<工程地址>/target/jacoco-ut/index.html,如: ?

    5K50发布于 2019-10-10
  • 来自专栏JavaEdge

    JaCoCo探针策略原理及案例总结

    通过将这种原理用于 jacoco,降低了性能开销 ? 4 如何实现代码注入 ? JaCoCo通过ASM在字节码中插入Probe指针(探测指针),每个探测指针都是一个BOOL变量(true表示执行、false表示没有执行),程序运行时通过改变指针的结果来检测代码的执行情况(不会改变原代码的行为 增量注入 JaCoCo默认全量注入. 源码中注入的逻辑主要在ClassProbesAdapter ? 上面可以看到,因为获取时机比较多,可能会得到多份运行时数据,对于这些数据,可以通过JaCoCo的mergeTask把ClassId相同的运行时数据进行merge。 如下图所示,JaCoCo会对ClassId相同的运行时数据进行merge,并对相同位置的probe指针取或: ?

    1.7K41发布于 2020-05-27
领券