为了提供一个更好的 JaCoCo 单测报告,我们可以将一些无业务逻辑的代码(PO,DTO等)从单测报告中移除。
如下面配置,通过在 configuration -> excludes -> exclude 排除相关包路径即可。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<configuration>
<excludes>
<exclude>com.example.domain.*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
官方文档说明地址 https://www.baeldung.com/jacoco-report-exclude
为了提供一个更好的 JaCoCo 单测报告,我们可以将一些无业务逻辑的代码(PO,DTO等)从单测报告中移除。如下面配置,通过在 configuration -> excludes -> exclude 排除相关包路径即可。<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0
jacoco-parser report.xml
Module: feature-payment-detail
Type: INSTRUCTION, Covered: 3166, Missed: 4665, Total: 7831, Coverage: 40.43
Type: BRANCH, Covered: 185, Missed: 287, Total: 472, Coverage: 39.19
Type: LINE, Cov
排除class
# 排除目录结构 domain/xxx-domain/src/main/java/com/xxx/domain/manager/impl/UserXxxManagerImpl.java的class
一般直接为**/上级目录/Xxx.class, 即通过**/impl/UserXxxManagerImpl.class进行排除,
如果无法排除可尝试**UserXxxManagerImpl**
在项目中使用JaCoCo覆盖率的时候,也遇到过各种奇葩的问题,在这里列出来分享下,问题和实际的项目关系密切,希望对有遇到过相似问题的童鞋有所启发。
1.1 覆盖率包在部分手机6.0上安装失败
事情起因:在测试新功能时,用打的覆盖率包,外包反馈部分
什么是单元测试覆盖率?
在一些大型且繁琐的项目中, 难免会将一些方法的单元测试遗漏, 而遗漏的后果则是后来者修改bug还得自己重写单元测试
所以某些公司, 会将单元测试覆盖率, 作为工作考核要求, 例如必须达到60%/70%/80%等, 也被用来衡量单元测试环境的完整与充分度
集成jacoco
在项目中使用两种配置方式
在父pom文件中新增jacoco插件及依赖,同时配...
从jacoco报告生成各种类别的徽章
jacoco-cov-badge-maven-plugin是一个maven插件,可以通过从jacoco报告中计算代码覆盖率来本地生成svg , png或jpg徽章。
Jacoco是代码覆盖率实用程序,可为基于Java的项目生成不错的报告,并且通常集成为maven构建插件。
有几种在线实用程序
gradle-android-junit-jacoco-plugin
从Gradle项目生成Jacoco报告的Gradle插件。 此插件支持Android应用程序,Android库,Kotlin和Java插件。 应用此插件后,它将遍历每个子项目并创建相应的Jacoco任务。
Android专案
JVM单元测试
任务jacocoTestReport<Flavor><BuildType>
在执行test<Flavor><BuildType>UnitTest任务之前
执行check任务时执行
生成的Jacoco报告可以在build/reports/jacoco/<Flavor>/<BuildType> 。
任务combinedTestReport<Flavor><BuildType>
在执行test<Flavor><BuildType>UnitTest并create<Flavo
SonarQube中的使用单位和集成测试覆盖率报告示例
为了将jacoco报告发布到sonarqube,请使用您的凭据在本地〜/ .m2 / settings.xml文件中设置新的配置文件:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar>
jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar>
<sonar>sonar</sonar>
在我司对核心业务基于Spock落地单元测试过程中, 使用jacoco插件生成单元测试报告,遇到了覆盖率异常的问题.
经过排查, 最终发现在使用powermock的
@PrepareForTest([HttpUtils.class, XXXHandler.class]) 注解时, 数组里的类是会被Jacoco忽略的.
powermock和jacoco存在冲突,以下是抄来的解释:
JaCoCo和PowerMock都是通过在加载类的时候修改字节码文件来实现统计覆盖率和mock静态类的功能。
http://stackoverflow.com/questions/29887805/filter-jacoco-coverage-reports-with-gradle
apply plugin: 'java'
apply plugin
public void testAdd() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result);
2. 接下来,我们需要使用DC/CC技术来测试代码的覆盖率。DC/CC技术是一种基于路径的测试技术,它可以检测出所有可能的路径,并确保每个路径至少被执行一次。
3. 我们可以使用JaCoCo工具来检测代码的覆盖率。首先,我们需要将JaCoCo添加到项目中。可以在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
</dependency>
4. 然后,在命令行中运行以下命令来生成JaCoCo报告:
mvn clean test jacoco:report
5. 最后,我们可以在target/site/jacoco/index.html文件中查看JaCoCo报告,以检查代码的覆盖率。
以上就是测试过程和代码。希望能对您有所帮助。
CSDN-Ada助手:
XXL-JOB原理--任务执行(五)
XXL-JOB原理--任务执行(五)
weixin_49281805:
Jacoco配置-从报告中排除类/程序包
Jacoco配置-从报告中排除类/程序包
m0_70611394: