这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告。 我们的构建要求如下: 运行测试时,我们的构建必须为单元测试和集成测试创建代码覆盖率报告。...配置JaCoCo Maven插件 我们使用JaCoCo Maven插件有两个目的: 它使我们可以访问JaCoCo运行时代理,该代理记录了执行覆盖率数据。...它根据JaCoCo运行时代理记录的执行数据创建代码覆盖率报告。 我们可以按照以下步骤配置JaCoCo Maven插件: 将JaCoCo Maven插件添加到我们的POM文件的插件部分。...plugin> 配置单元测试的代码覆盖率报告 我们可以通过将两个执行添加到插件声明中来为单元测试配置代码覆盖率报告。...配置集成测试的代码覆盖率报告 我们可以通过在插件声明中添加两个执行来为集成测试配置代码覆盖率报告。这些执行方式如下所述: 第一次执行将创建一个指向JaCoCo运行时代理的属性。
简介 Jacoco 是一个开源的覆盖率工具。...Jacoco 可以嵌入到 Ant 、Maven 中,并提供了 EclEmma Eclipse 插件,也可以使用 JavaAgent 技术监控 Java 程序。...今天分享使用的环境是: k8s+jenkins 构建的,其中涉及到了在 node 节点机的容器中生成 jacoco.exec 文件,然后将其拷贝到节点机,再从节点机将 jacoco.exec 文件拷贝到...jenkins 的代码库中,用于生成报告。.../start.sh Step2:用于在容器里定时生成 jacoco.exec 此 jacoco.exec 文件是拿取的代码执行的情况文件所生成的一个 exec文件,该文件仅仅是 Step1 中需要的一个脚本文件
在properties下新增 jacoco.skip.instrument>truejacoco.skip.instrument> jacoco.percentage.instruction>...0.01jacoco.percentage.instruction> jacoco.percentage.branch>0jacoco.percentage.branch> 在plugin新增... org.jacoco jacoco-maven-plugin <configuration...assertEquals(name, githubUser.getName()); verify(service).getUserProfile("ryan-miao"); } } 验收,查看覆盖率...mvn clean install 查看jacoco覆盖率 report在target/site/jacoco/index.html
Jacoco可以嵌入到Ant、Maven中,也可以使用Java Agent技术监控任意Java程序,也可以使用Java Api来定制功能。...Jacoco会监控JVM中的调用,生成监控结果(默认保存在jacoco.exec文件中),然后分析此结果,配合源代码生成覆盖率报告。...> 如果是使用junit 使用以上配置。... 假设说原本的项目用的是junit 后来改用testng,这时候不需要修改junit的tastcase,只需配testng.xml ,testng可以执行junit的代码...mvn clean test 4、测试结果 执行成功后会在target/site目录下生成html覆盖率报告 ? 报告目录 ?
前言 前面有一篇 文章 使用 Python + Coverage 来统计测试用例的代码覆盖率 Jacoco 针对 Java 语言的一款开源的覆盖率工具,可以嵌入到 Maven、Gradle 中,提供多种尺度的覆盖率计数器...,比如:类覆盖、行覆盖、分支覆盖等 本篇将聊聊服务端代码的覆盖率统计,以 Spring Boot 项目为例,使用 Jacoco + junit 来统计服务端的代码覆盖率 2....接着,配置 Jacoco 插件及相关的 goal,使用 includes 和 excludes 两个关键字设定包含或排除的类路径 比如:这里只统计 com.xingag.api.service 下面的类...:report 命令生成代码覆盖率报告 代码覆盖率报告目录在:....最后 上面只是通过一个简单的例子展示了 Jacoco 统计单元测试代码覆盖率的过程 实际项目中,代码覆盖率只能为单元测试提供一个参考,考虑到开发效率,不能一味地追求高覆盖率;事实上,高覆盖率不一定能保证没有缺陷
二、准备 安装Jenkins,请移步《Docker学习(二)- Docker 安装 Jenkins》 Jenkins的配置 三、Jenkins配置 1、安装SonarQube Scanner插件 2、
在实际应用中,JaCoCo可以嵌入到构建工具如Maven和Ant中,也可以作为Eclipse插件使用。此外,它还支持JavaAgent技术,能够监控Java程序的执行并收集覆盖率数据。...例如: plugins { id 'jacoco' version '0.8.3' // 使用最新的版本 // 其他插件 } 配置JaCoCo插件: 在pom.xml或build.gradle...它使用不同颜色的菱形图标来表示分支的代码覆盖率。并使用背景颜色来表示行的代码覆盖率。 绿色菱形表示所有分支均已被覆盖。 黄色菱形意味着代码已被部分覆盖 , 一些未经测试的分支。...排除不相关的类 意到 App类对于覆盖率报告并不是非常重要。在某些情况下,此类的覆盖率可能会扭曲整体代码覆盖率报告。为了避免此类不相关的类影响代码覆盖率,我们可以使用Jacoco插件将其排除。.../CD中使用 现在假设我们使用 CI/CD 来部署代码,我们可能想验证已经完成了多少行代码覆盖率或代码覆盖率百分比等。
以下是JaCoCo插件的使用步骤。...1.安装JaCoCo插件,搜索jacoco 2.在Maven项目中引入JaCoCo插件,执行maven jacoco生成代码覆盖率报告 org. jacocojacoco- agent . destfile> 3.使用jacoco步骤,在mvn...命令之后执行,写法如下 steps{ sh "mvn clean install” jacoco( //代码覆盖率统计文件位置,Ant风格路径表达式 execPattern...: ' target/classes', //源码文件位置,Ant风格路径表达式 sourcePattern: ' src/main/java', //排除分析的位置
默认情况下,由于Jacoco不会区分Lombok生成的代码和正常的源代码。结果,在引入Lombok后就会发现,覆盖率通常会低得让人匪夷所思。...例如某个项目,通过Jacoco获取到的代码行数以及覆盖率为: ? 可见,这个覆盖率是非常低的,会被质量门禁判违规(常见会要求>50%甚至>80%)。 ?...通过这个方式,也可以在数据源头上进行排除。 类似的,还可以通过基于jacoco覆盖率报告来自研解析工具,进行覆盖率或者增量覆盖率计算。这个过程中,也可以指定需要排除的包或者类,实现类似的做法。...5 使用lombok.addLombokGeneratedAnnotation 其实从Jacoco 0.8.0开始,其实就具备了可以将lobmok生成的代码从Jacoco报告中排除的能力。...1专门为这些生成的代码编写单元测试用例 【X】 2要求降低质量门禁中的覆盖率要求【X】 3手工排除Bean 【X】 4使用Sonarqube 而不是Jacoco的结果【OK】 5使用lombok.addLombokGeneratedAnnotation
JaCoCo:一个 Java 的测试覆盖率工具 下面我就以 Jacoco 为例,讲讲如何实际地使用一个测试覆盖率工具。...开发它的团队原本是开发一个叫 EclEmma 的 Eclipse 插件,这个插件本身就是用来做测试覆盖率的。...JaCoCo 可以提供好多种报告类型:XML、CSV、HTML 等等。按照一般使用习惯来说,我会优选使用 HTML 的报告,这样就可以直接用浏览器打开看了。...以 JaCoCo 为例,我们讲解了一个测试覆盖率工具,其中的 counter 对应着测试覆盖率的指标。在实际的项目中使用测试覆盖率工具,关键是要把它与自动化的过程结合起来,让它不是独立的存在。...对于无法测试到第三方代码,要用一个薄薄的隔离层将代码隔离出去,在构建脚本中将隔离层排除在外。有一点需要注意的是,排除脚本千万别被滥用了。
2.2 引入jacoco插件 1 2 org.jacoco 3 jacoco-maven-plugin...> 29 30 31 jacoco可以将单元测试的结果,直接生成html网页,分析代码覆盖率。...浏览器打开index.html,就能看到覆盖率 ?...讲一个小技巧:有些类,比如DAO/Mytatis层自动生成的DO/Entity,还有一些常量定义等,其实没什么测试的必要,可以排除掉,这样不仅可以提高测试的覆盖率,还能让我们更关注于核心业务类的测试。...排除的方法很简单,可jacoco插件里配置exclude规则即可,参考下面这样: target/jacoco.exec
使用步骤 使用 JaCoCo 进行代码覆盖率分析一般包括以下几个步骤: 1 ....生成覆盖率报告:使用 JaCoCo 工具分析测试结果,生成代码覆盖率报告。 4 . 查看报告:查看生成的覆盖率报告,了解项目中各部分的代码覆盖率情况。 4....Maven 插件:使用 Maven 构建项目时,可以使用 jacoco-maven-plugin 插件来集成 JaCoCo 。...Ant 插件:使用 Ant 构建项目时,可以使用 jacocoant 插件来集成 JaCoCo 。...Gradle 插件:使用 Gradle 构建项目时,可以使用 jacoco 插件来集成 JaCoCo 。
检查Java代码是否符合某些特定的编码规范。常见的类型如下: ①潜在的bug:空的try/catch/finally/switch语句。 ②未使用的代码:未使用的局部变量、参数、私有方法等。...图9 JUnit构建结果 2.3 Jacoco JaCoCo支持多种覆盖率的统计,包括: 行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行; 类覆盖率:度量计算class...3.1安装Jenkins Jacoco插件 进入Jenkins插件中心,安装Jacoco插件,如图10所示。 ?...', //源代码文件位置 exclusionPattern:'src/test*', //排除分析文件位置 skipCopyOfSrcFiles:false, //是否禁用每行每行覆盖率文件的原文件显示...不起作用。
sonarQube默认插件的版本 sonar.java.source=1.8 关于覆盖率的文档:https://docs.sonarqube.org/latest/analysis/coverage/...#覆盖率报告路径,他是一个通用命令,支持多种语言设置 sonar.coverageReportPaths #java的覆盖率报告路径:jacoco sonar.coverage.jacoco.xmlReportPaths...#findbugs sonar.java.spotbugs.reportPaths 根据上面信息我们得出结论,就是Jenkins使用sonar Scanner扫描的时候,插件对参数进行分析,然后执行的...,但是它的参数配置并不符合我们多个模块的扫描要求, 既然Jenkins上的sonarScan不能使用,那么我们可以使用maven插件里的sonar插件,我也想过其他插件,或是其他配置方法,比如ant+...sonar配置,这个还有搭建ant,然后还要写复杂的配置,然后还有 Cobertura 微服务覆盖率扫描插件,都需要过多的配置,我也没那么多精神搞这些东西。
图片SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。...SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比较常用的为 Gradle 和 Maven。...SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量...,主要原因为在该maven项目之前已经集成了Jacoco插件(具体Maven与Jacoco的集成请参考我的另外一篇文章)。...2.该集成方案其实还是首先通过maven package 命令去生成对应的覆盖率报告,然后通过sonar scanner直接使用该覆盖率报告并通过一定算法加工并展示到SonarQube的界面上去。
JAVA代码覆盖率工具JaCoCo-原理篇和JAVA代码覆盖率工具JaCoCo-实践篇已经给大家介绍过了,本篇为踩坑篇,这里的话题不是说明JaCoCo有什么问题,而是把过程中遇到的几个棘手问题的解决方法分享给大家...一、覆盖率踩过的坑 在项目中使用JaCoCo覆盖率的时候,也遇到过各种奇葩的问题,在这里列出来分享下,问题和实际的项目关系密切,希望对有遇到过相似问题的童鞋有所启发。...此种情况排除 (3) JaCoCo的jar包重新签名 和RDM打包,也就增加了JaCoCo部分,会不会是JaCoCo的两个jar包jacocoagent.jar和jacocoagent.jar出的问题?...使用jarsigner重新对这两个jar包用应用宝的密钥进行签名,打包安装,问题仍然存在。 此种情况排除 到这里,网上的各种方法基本都试过了,没任何效果,问题纠结在这里了。...(2) 如果1没有错误,那就要看看你的源码和class文件路径指定正确没,JaCoCo是按照包名去搜索的,这个一定要确定好,很多项目会自建代码目录的。
SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。...SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比较常用的为 Gradle 和 Maven。...SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量...,主要原因为在该maven项目之前已经集成了Jacoco插件(具体Maven与Jacoco的集成请参考我的另外一篇文章)。...2.该集成方案其实还是首先通过maven package 命令去生成对应的覆盖率报告,然后通过sonar scanner直接使用该覆盖率报告并通过一定算法加工并展示到SonarQube的界面上去。
目前在Jenkins中,有很多插件都实现了代码覆盖率工具的接入,例如 Cobertura Plugin, Jacoco Plugin, Clover Plugin…但是这些插件的配置项,结果页展示的图表和显示的内容都是类似的...这个 API 插件将处理那些最重复的工作,将其封装成不同的抽象层,并提供易于使用的 API 接口让其它插件去实现。...支持的代码覆盖率工具 内置 JaCoCo 其它实现了 Code Coverage API plugin 的插件 Cobertura (Cobertura Plugin) llvm-cov (llvm-cov...在子概要表中,看到每一个子项的代码覆盖率情况。同时,使用右上角的 range handler 可以筛选出我们想要看到的项来减小表的大小。...架构 插件在运行过程中主要会做下面几个事情: 根据用户的配置找到代码覆盖率报告文件 使用 Adapter 将报告文件转化为统一的标准格式 解析标准格式的报告文件并并合并它们 显示解析后的结果 所以,我们可以简单编写一个
一般来说,我们会使用两个插件来一起完成单测覆盖率报告的生成,分别是: Maven Surefire Plugin JaCoCo Plugin 其中 Maven Surefire Plugin 是用来在...Maven 的编译阶段运行单测代码,而 JaCoCo 则是用来生成具体的单测覆盖率报告。...我们使用浏览器打开该文件可以浏览到单测覆盖率情况,如下图所示: 疑问 关于如何配置这两个插件的资料很多,但都运行不起来。后面我参考了官网的配置,就成功配置好了。...JaCoCo 插件需要基于 Surefire 插件使用,如果去掉 Surefire 插件,JaCoCo 就生成不了报告了。...参考资料 JaCoCo 单元测试覆盖率 - 简书 思考维度 - 浅谈代码覆盖率 - 来自有赞 Maven Surefire Plugin – Introduction VIP!
领取专属 10元无门槛券
手把手带您无忧上云