如何在Eclipse中结合Maven、Gradle查看特定测试类的SonarQube代码覆盖率
在Eclipse中结合Maven/Gradle查看特定测试类的SonarQube代码覆盖率
Maven 方案
步骤1:配置Surefire插件指定测试类
在项目的pom.xml中,给Surefire插件添加测试类过滤规则,替换成你要单独分析的测试类全限定路径:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <!-- 单个测试类 --> <includes> <include>com/yourpackage/YourTargetTest.java</include> </includes> <!-- 多个测试类可添加多个include节点 --> </configuration> </plugin> </plugins> </build>
步骤2:生成覆盖率报告并提交到SonarQube
在Eclipse的Maven视图中,执行以下命令(或直接在项目根目录终端运行):
mvn clean test jacoco:report sonar:sonar
clean:清理历史构建文件,避免干扰test:仅运行你指定的测试类jacoco:report:生成仅对应这些测试的代码覆盖率报告sonar:sonar:将覆盖率数据同步到SonarQube服务器
步骤3:查看结果
打开SonarQube网页端进入你的项目,此时展示的就是该测试类覆盖的代码覆盖率。若要恢复全量测试覆盖率,只需移除Surefire插件的includes配置,重新执行上述命令即可。
Gradle 方案
步骤1:配置Test任务指定测试类
在项目的build.gradle中,修改test任务添加测试类过滤规则,替换成目标测试类的全限定名:
test { // 单个测试类(支持通配符,比如*Test.class) include 'com/yourpackage/YourTargetTest.class' // 多个测试类可添加多条include语句 // include 'com/yourpackage/AnotherTargetTest.class' // 启用JaCoCo生成覆盖率报告 jacoco { enabled = true } }
步骤2:执行构建并提交到SonarQube
在Eclipse的Gradle视图中,执行以下任务(或终端运行):
./gradlew clean test jacocoTestReport sonar
clean:清理旧构建产物test:仅运行指定的测试类jacocoTestReport:生成对应测试的覆盖率报告sonar:将报告同步到SonarQube
步骤3:查看结果
进入SonarQube项目页面,即可看到仅目标测试类的代码覆盖情况。恢复全量测试只需删除test任务中的include配置。
Eclipse 本地快捷操作
- 无需修改构建文件的临时方案:右键单个测试类,选择Run As > JUnit Test,安装Eclipse Marketplace的JaCoCo插件后,可直接在Eclipse中查看本地覆盖率,再结合SonarQube的局部分析。
- Maven项目可在Run Configuration的Maven Build中,在Goals栏填入
clean test -Dtest=YourTargetTest,直接指定测试类运行,无需修改pom.xml。 - Gradle项目可在Run Configuration的Gradle Task中,添加参数
test --tests "com.yourpackage.YourTargetTest",快速运行指定测试类。
内容的提问来源于stack exchange,提问作者subhashis
相关产品推荐
相关产品推荐

