java单元测试覆盖率统计

很多时候,开发写了单元测试,但是我们并不知道当前的单元测试覆盖率是怎么样的,所以我们需要有技术手段来分析我们的单元测试覆盖率情况。

那么,jacoco来了...

jacoco介绍:

jacoco 是一个开源的覆盖率工具。Jacoco 可以嵌入到 Ant 、Maven 中,并提供了 EclEmma Eclipse 插件,也可以使用 Java Agent 技术监控 Java 程序。很多第三方的工具提供了对 Jacoco 的集成,如 sonar、Jenkins、IDEA。

Jacoco 包含了多种尺度的覆盖率计数器,包含指令级(Instructions,C0 coverage),分支(Branches,C1 coverage)、圈复杂度(Cyclomatic Complexity)、行(Lines)、方法(Non-abstract Methods)、类(Classes)。

单元测试覆盖率统计方法:

1)首先先配置java的环境和maven的环境变量。

2)然后在被测项目的pom.xml文件添加junit模块

3)在被测项目的pom.xml文件添加jacoco模块

运行mvn test执行单元测试用例

此时查看本路径下已经有了对应的单元测试覆盖率的html报告

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

### Java单元测试覆盖率报错解决方案 在开发过程中,如果遇到Java单元测试覆盖率工具(如JaCoCo)报错的情况,可以按照以下方式排查并解决问题。 #### 修改临时目录配置 某些情况下,IDEA运行JUnit测试时可能会因为默认的临时目录权限不足或其他原因导致覆盖数据无法正常生成。可以通过设置`-Djava.io.tmpdir`参数来指定自定义的临时目录路径[^1]。 具体操作如下: 1. 打开 IDEA 的 `Help -> Edit Custom VM Options...` 文件。 2. 添加以下内容到文件中: ```properties -Djava.io.tmpdir=E:\resource\idea\Temp ``` 3. 保存文件后重启 IDEA。 通过上述调整,能够有效避免因临时目录问题引发的覆盖率计算失败。 #### 配置 JaCoCo 插件 当使用 JaCoCo 巛具进行覆盖率统计时,其工作原理是在被测类中注入额外的数据成员 `$jacocoData` 和初始化方法 `$jacocoInit()` 来记录执行状态[^5]。然而,这种机制可能导致兼容性问题或冲突,特别是在复杂项目结构下。以下是常见解决办法: ##### 方法一:更新依赖版本 确保项目的构建工具(Maven 或 Gradle)使用的 JaCoCo 版本是最新的稳定版。旧版本可能存在未修复的 Bug 导致错误发生。对于 Maven 用户来说,可以在 `pom.xml` 中添加/升级插件声明: ```xml <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.9</version> <!-- 替换为最新版本 --> <executions> ... </executions> </plugin> ``` Gradle 则需同步更改 build.gradle 文件中的相关内容: ```groovy plugins { id 'jacoco' } jacoco { toolVersion = "0.8.9" // 使用最新的工具版本号 } ``` ##### 方法二:排除特定包名 有时部分代码并不适合参与覆盖率分析(比如第三方库),这时可通过过滤规则将其移除掉。例如,在 jacoco.exec 探针生成阶段加入忽略选项: ```xml <configuration> <excludes> <exclude>**/*Test.class</exclude> <exclude>com/example/thirdparty/**</exclude> </excludes> </configuration> ``` #### 调整VM启动参数 除了前面提到过的 `-Djava.io.tmpdir` 参数外,还有其他 JVM 层面的因素也可能影响最终结果准确性。假如单纯修改 idea*.vmoptions 文件不起效,则尝试直接针对单次运行命令追加必要的调试标志位[^4]: ```bash -Dfile.encoding=UTF-8 \ -agentlib:javatestagent=path/to/jacocoagent.jar=destfile=target/jacoco-it.exec,includes=com.example.* ``` 以上即为几种常见的处理思路和技术手段集合;当然实际情况千差万别,还需结合具体的日志提示进一步定位根本原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值