首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运行Jacoco coverage时缺少带有when和enum的分支

基础概念

JaCoCo(Java Code Coverage)是一个开源的代码覆盖率工具,用于测量Java程序的代码覆盖率。它可以帮助开发者了解哪些代码行被执行了,哪些没有,从而提高代码质量和测试覆盖率。

相关优势

  1. 高精度:JaCoCo能够精确地测量代码覆盖率,包括行覆盖、分支覆盖等。
  2. 集成方便:可以与Maven、Gradle等构建工具无缝集成。
  3. 支持多种报告格式:可以生成HTML、XML、CSV等多种格式的报告。
  4. 支持多线程和并发测试:能够准确测量多线程和并发代码的覆盖率。

类型

JaCoCo支持多种类型的代码覆盖率测量,包括:

  1. 行覆盖:测量每行代码是否被执行。
  2. 分支覆盖:测量条件分支是否被执行。
  3. 方法覆盖:测量每个方法是否被执行。
  4. 指令覆盖:测量每条字节码指令是否被执行。

应用场景

JaCoCo广泛应用于以下场景:

  1. 单元测试:确保每个单元(方法)都被充分测试。
  2. 集成测试:确保多个单元组合在一起时也能正常工作。
  3. 代码审查:通过覆盖率报告帮助审查代码质量。
  4. 持续集成:在持续集成流程中自动运行测试并生成覆盖率报告。

问题分析

当运行JaCoCo覆盖率时,如果缺少带有whenenum的分支,可能是由于以下原因:

  1. 测试用例不足:可能没有编写足够的测试用例来覆盖所有分支。
  2. 代码逻辑问题:代码中的when表达式或enum定义可能存在逻辑错误,导致某些分支无法被执行。
  3. JaCoCo配置问题:JaCoCo的配置可能不正确,导致某些分支未被正确测量。

解决方法

  1. 增加测试用例: 确保编写足够的测试用例来覆盖所有可能的whenenum分支。例如:
  2. 增加测试用例: 确保编写足够的测试用例来覆盖所有可能的whenenum分支。例如:
  3. 检查代码逻辑: 确保when表达式和enum定义没有逻辑错误。例如:
  4. 检查代码逻辑: 确保when表达式和enum定义没有逻辑错误。例如:
  5. 检查JaCoCo配置: 确保JaCoCo的配置正确。例如,在Maven中配置JaCoCo:
  6. 检查JaCoCo配置: 确保JaCoCo的配置正确。例如,在Maven中配置JaCoCo:

参考链接

通过以上方法,可以解决运行JaCoCo覆盖率时缺少带有whenenum分支的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用JaCoCo Maven插件创建代码覆盖率报告

这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元集成测试创建代码覆盖率报告。 我们构建要求如下: 运行测试,我们构建必须为单元测试集成测试创建代码覆盖率报告。...运行我们集成测试,此属性值作为VM参数传递。 创建一个执行,该执行在集成测试运行后为集成测试创建代码覆盖率报告。...因为我们要为单元测试创建代码覆盖率报告,所以我们必须确保在运行单元测试JaCoCo代理正在运行。我们可以通过添加价值保证本surefireArgLine财产作为价值argLine配置参数。...因为我们要为集成测试创建代码覆盖率报告,所以我们必须确保在运行集成测试JaCoCo代理正在运行。我们可以通过将failsafeArgLine属性值添加为argLine配置参数值来实现。...当此配置文件处于活动状态,仅运行单元测试。 在集成测试配置文件用于运行集成测试。 在所有的测试配置文件用于为运行单元测试集成测试。

1.9K20
  • jacoco 生成单测覆盖率报告

    jacoco 包含了多种尺度覆盖率计数器,包含指令级覆盖(Instructions,C0coverage)、分支覆盖(Branches,C1coverage)、圈复杂度(CyclomaticComplexity...分支覆盖率:度量 if switch 语句分支覆盖情况,计算一个方法里面的总分支数,确定执行不执行分支数量。...二、jacoco maven 集成 2.1 mvn 命令增加参数 在执行 mvn 命令,加上 "org.jacoco:jacoco-maven-plugin:prepare-agent" 参数即可...执行以上命令后,会在当前目录 target 目录下产生一个jacoco.exec文件,该文件就是覆盖率文件。 总体说来,这种方式比较简单,在与 jenkins 集成也非常方便。...另外 maven 测试类需要遵循相应规范命名,否则无法运行测试类,无法生成测试报告以及覆盖率报告。

    3.3K10

    Java代码覆盖率利器JaCoCo基本概念详解

    Maven插件可收集覆盖率信息并在Maven构建中创建报告 非功能特性 简单用法以及与现有构建脚本工具集成 良好性能最小运行时开销,尤其是对于大型项目 轻量级实现,对外部库系统资源依赖性最小...与往常一样,上面列出所有商标均为其各自所有者财产。 1.3 覆盖率计数器 - Coverage Counters JaCoCo使用一组不同计数器来计算覆盖率指标。...该度量完全独立于源格式,并且即使在类文件中没有调试信息情况下也始终可用。 分支 - Branches(C1覆盖率) JaCoCo还为所有ifswitch语句计算分支覆盖率。...JaCoCo根据分支数(B)决策点数(D)使用以下等效方程式计算方法圈复杂度: v(G)= B - D + 1 根据每个分支覆盖状态,JaCoCo还可以计算每种方法覆盖遗漏复杂度。...缺少复杂性再次表明完全覆盖模块测试用例数量。请注意,由于JaCoCo不考虑异常处理,因为分支try / catch块也不会增加复杂性。

    1.7K10

    JaCoCo官方教程

    Maven插件可收集覆盖率信息并在Maven构建中创建报告 非功能特性 简单用法以及与现有构建脚本工具集成 良好性能最小运行时开销,尤其是对于大型项目 轻量级实现,对外部库系统资源依赖性最小...与往常一样,上面列出所有商标均为其各自所有者财产。 1.3 覆盖率计数器 - Coverage Counters JaCoCo使用一组不同计数器来计算覆盖率指标。...该度量完全独立于源格式,并且即使在类文件中没有调试信息情况下也始终可用。 分支 - Branches(C1覆盖率) JaCoCo还为所有ifswitch语句计算分支覆盖率。...JaCoCo根据分支数(B)决策点数(D)使用以下等效方程式计算方法圈复杂度: v(G)= B - D + 1 根据每个分支覆盖状态,JaCoCo还可以计算每种方法覆盖遗漏复杂度。...缺少复杂性再次表明完全覆盖模块测试用例数量。请注意,由于JaCoCo不考虑异常处理,因为分支try / catch块也不会增加复杂性。

    3.9K50

    JaCoCo实例解析之代码覆盖率

    代码覆盖率 在做单元测试,代码覆盖率常常被拿来作为衡量测试好坏指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。...JaCoCo Jacoco从多种角度对代码进行了分析,包括指令(Instructions,C0 Coverage),分支(Branches,C1 Coverage),圈复杂度(Cyclomatic Complexity...这项指数完全独立于源码格式并且在任何情况下有效,不需要类文件调试信息。 2、Branches Jacoco对所有的ifswitch指令计算了分支覆盖率。...因为JaCoco直接对字节码进行操作,所以有些方法没有在源码显示(比如某些构造方法由编译器自动生成方法)也会被计入在内。 6、Classes 每个类中只要有一个方法被执行,这个类就被认定为被执行。...宝石颜色代表分支覆盖率,鼠标移动到黄色宝石上,将会提示如“1 of 2 branches missed”,对于“name==null”,有truefalse两种分支,这说明程序只执行了一种分支

    2.6K40

    Spring Boot - JaCoCo Code Coverage

    概述 JaCoCo(Java Code Coverage)是一个开源Java代码覆盖率工具,它主要用于评估Java程序测试完整性。...通过跟踪测试过程中执行代码,JaCoCo能够提供多种覆盖率指标,帮助开发者确保代码测试质量。这些指标包括指令覆盖、分支覆盖、圈复杂度、行覆盖、方法覆盖类覆盖。...它原理是通过在测试运行时,对程序代码执行情况进行监控,并通过一系列规则限制来确保代码测试覆盖程度。这样工具对于提升软件测试全面性深度具有重要作用。...JaCoCo插件依赖。...在CI/CD配置中添加步骤来运行测试并生成覆盖率报告。 使用JaCoCo命令行工具(可选): 使用JaCoCo提供命令行工具来生成报告,如jacoco coverage report。

    51111

    jacoco不是奶茶,却像奶茶一样美味,不尝一下吗?

    2、jacoco配置 市面上 Java常用覆盖率工具工具有Jacoco、EmmaCobertura。 今天专门聊下jacoco。感觉像奶茶。哈哈,注意下面这是今天正题哦。...通过下面的官方网址:https://www.jacoco.org/jacoco/ 下载解压后: 2.2 jacoco配置 jacoco可以有两种生效模式:On-The-Fly代理模式 Offine...绿色:全覆盖,所有分支被执行。 3、ide中配置 3.1 dump report官方代码。 在内网环境覆盖率统计,因为经常会拉下来看一下,总是使用命令这种方式比较低下。...5、jacoco原理 覆盖率粒度从细到粗分为:指令、分支、方法、类级别。采集粒度越细,代码覆盖率结果越准确,有利有弊。同时性能损耗也越大。...,又要拿新class 进行更新,注入代码编译出来未注入代码差异过大,因此失败,所以在启动jacoco时候即使在debug模式,也不能热更新。

    50940

    Java 8,Jenkins,JacocoSonar进行持续集成

    4.2 本文范围是解释安装设置必要工具所有步骤,以使Java 8CI服务器完全正常运行。...项目配置 1、安装Java 8 2、创建一个包含几个模块,几个类几个jUnit测试模块套件 3、将代码提交到您源代码版本管理服务器中 4、在名为“ jacoco-0.7.1”线束中创建一个文件夹...--needed to have tests NOT to steal focus when running, works in latest apple jdk update only.-->...Mercurial or Subversion Sonar 如果您在防火墙或代理后面,并且在配置网络设置遇到问题,可以随时从此处手动下载并安装它们。...Sonar 按照此脚本创建数据库,并选择运行此查询以使连接正常工作:GRANT ALL PRIVILEGES ON 'sonar'.* TO 'sonar'@'localhost'; 进入声纳配置文件

    1.9K10

    关于代码覆盖率(Code Coverage)

    最近做了一些关于代码覆盖率工具调查,对一些主流代码覆盖率工具比如 Gcov,JaCoCo,Istanbul 等都做了一些实践持续集成工作,也有了一定了解。 本篇简要介绍:什么是代码覆盖率?...分支覆盖率:有多少控制结构分支(例如if语句)被执行 条件覆盖率:有多少布尔子表达式被测试为真值假值 行覆盖率:有多少行源代码被测试过 代码覆盖率是如何工作?...以我理解 JaCoCo Coverage 这两个工具原理属于这一类别。 3....比如: 产品源代码只有 E2E(端到端)测试用例,通常只能选择第一类工具,即通过插桩编译出可执行文件,然后进行测试结果收集。 产品源代码有单元测试用例,通常选择第二类工具,即运行时收集。...这类工具执行效率高,易于做持续集成。 当前主流代码覆盖率工具 代码覆盖率工具有很多,以下是我用过不同编程语言代码覆盖率工具。在选择工具,我力求去选择那些开源、流行(活跃)、好用工具。

    1.6K30

    软件测试|代码覆盖率

    JaCoCo,即 Java Code Coverage Library,它由 EclEmma 团队根据多年来使用集成现有库经验教训而创建一个开源代码覆盖率工具,支持 Java Kotlin;...支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖代码部分;同时它也能检查程序中废代码不合理逻辑提高质量;JaCoCo 能本地进行代码检查,也可以把它与持续集成工具 Jenkins 进行集成...环境准备Jenkins 服务执行代码覆盖率节点机器,此机器上需要部署好 Java Maven 工具Jenkins 上需要安装 JaCoCo Plugin 插件被测项目代码 https://gitee.com.../ceshiren/iTest.gitJunit 单元测试框架项目的配置在 Maven 项目的配置 pom.xml 文件中配置 jacoco-maven-plugin 工具图片在 jenkins 中建立一个自由风格项目图片配置好运行节点机器...(Post-build Actions)中添加输出信息配置,选择 Record JaCoCo Coverage report 可以保持默认图片执行job手工执行 job 完成后,在 job 首页上会展示一个代码覆盖率扫描趋势图

    85830

    JAVA代码覆盖率工具JaCoCo-原理篇

    JaCoCo包含了多种尺度覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity...分支覆盖率:度量ifswitch语句分支覆盖情况,计算一个方法里面的总分支数,确定执行不执行 分支数量。...上表JaCoCo支持部分,再详细解释下: (1) JaCoCo在Byte Code使用ASM技术修改字节码方法,可以修改Jar文件、class文件字节码文件。...JaCoCo对行探针是这样处理,添加两行指令之间一个额外探针,后续行至少包含一个方法调用。 以上是JaCoCo插桩原理,如果想深入了解,可以去看看它源码实现。...注意蓝色部分,上面的配置主要做了以下几个事情: (1) 项目已jar包方式打包,引入junitjacoco。 (2) Build执行instrument、report、check。

    24K154

    技术分享 | 代码覆盖率集成

    本文节选自霍格沃兹测试开发学社内部教材JaCoCo,即 Java Code Coverage Library,它由 EclEmma 团队根据多年来使用集成现有库经验教训而创建一个开源代码覆盖率工具...,支持 Java Kotlin;支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖代码部分;同时它也能检查程序中废代码不合理逻辑提高质量;JaCoCo 能本地进行代码检查,也可以把它与持续集成工具...环境准备Jenkins 服务执行代码覆盖率节点机器,此机器上需要部署好 Java Maven 工具Jenkins 上需要安装 JaCoCo Plugin 插件被测项目代码 https://gitee.com...KB在 jenkins 中建立一个自由风格项目image1080×596 76.3 KB配置好运行节点机器,此机器是环境准备中节点机器。...Coverage report 可以保持默认image1080×622 123 KB执行job手工执行 job 完成后,在 job 首页上会展示一个代码覆盖率扫描趋势图。

    46221

    简单两步实现 Jacoco+Android 代码覆盖率接入!(最新最全版)

    小卡片,回复 “合集” 获取系统性学习笔记测试开发技能图谱 前言 JaCoCo概念我就不在这里复述了网上有很多资料介绍,这里主要提一下他两种插桩模式:On-the-flyOffline On-the-fly...但在Android项目中只能使用JaCoCo离线插桩模式,主要是因为Android系统破坏了JaCoCo这种便利性,原因如下: Android虚拟机跟运行在服务器上JVM不同,它所支持字节码必须经过特殊处理以支持...,可能存在漏执行情况,另外一方面是本身测试用例设计不够完善导致没有覆盖到一些关键路径代码分支,因此亟需一种可以度量手工测试完成后对代码覆盖情况手段或者工具; 2、研发代码变更影响范围难以精准评估...配置文件中源码路径class文件路径即可。...因为不是每个人电脑中都安装了gradle,也不一定安装版本就是要编译项目需要版本,那么gradlew里面就配置了项目需要gradle版本,用户只需要运行gradlew就可以按照配置下载对应gradle

    5.7K20

    深入理解单元测试:技巧与最佳实践

    --more-->具体案例我们都知道单测主要目的是模拟执行你写过每一行代码,目的就是要覆盖到主要分支,做到自己每一行代码都心中有数。...这里 preCheck 函数就是简单检测做参数校验。测试只要我们手动将 metrics 设置为 null 就可以进入这个 if 条件。...配合 jacoco 输出单测覆盖率在 IDEA 中我们可以以 Coverage 方式运行,IDEA 就将我们单测覆盖情况显示在源代码中,绿色部分就代表在实际在运行时执行到地方。...需要注意是返回 mocked 对象需要记得关闭。不需要 Mock当然也不是所有的场景都需要 mock。比如刚才第一个场景,没有依赖任何外部服务就不需要 mock。...还是以 Pulsar 为例,它集成测试是需要模拟在本地启动一个服务端(因为 Pulsar 服务端源码测试代码都是 Java 写,更方便做测试),然后再运行测试代码。

    8900

    SonarQube测试覆盖率--Java

    测试覆盖率报告测试执行报告是评估代码质量重要指标。测试覆盖率报告告诉您测试用例涵盖代码百分比。测试执行报告告诉您已运行哪些测试及其结果。 SonarQube本身不计算覆盖范围。...您覆盖率工具应设置为在SonarScanner分析之前运行。 配置覆盖范围工具,使输出报告文件位置格式与 SonarScanner 预期相匹配。...调整您设置 要启用覆盖范围,您需要: 调整构建过程,以便 JaCoCo 报告生成步骤在 SonarScanner 步骤之前运行。 确保 JacCoCo 将其报告文件写入生成环境中定义路径。...> 支持通配符逗号分隔路径列表。.../site/ jacoco-aggregate/jacoco.xml 支持通配符逗号分隔路径列表

    2.5K31
    领券