Pav*_*mar 6 java maven jacoco jacoco-maven-plugin
我有一个 Maven 多模块项目,其中 JaCoCo 没有根据源文件生成报告。
通常,如果MyService是正在测试的类,它将以两种方式报告,一种通过MyService.html基于适当包的位置中的文件名和方法列表,以数字和图表的形式提供覆盖范围的整体图 - 列出所有方法在类中,每个方法都有一个指向另一个 html 的可点击链接,MyService.java.html其中包含带有红色/绿色/黄色背景的源代码以显示覆盖状态。
在我的场景中,只MyService.html生成而不是MyService.java.html和 方法在前者中列出并包含覆盖详细信息,但没有指向其他报告的超链接,如下所示。
问题在这里变得更有趣,我的 Maven 配置未在此模块中配置,但在父模块和其他子模块中能够正确生成报告。下面是maven插件配置供参考。
父 POM:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<destFile>${project.basedir}/target/jacoco-unit.exec</destFile>
<dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
子POM:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
Run Code Online (Sandbox Code Playgroud)
尝试切换 JaCoCo 版本,但没有任何帮助,现在坚持使用最新的 0.8.2。Maven 是最新的 - 3.6.0。除此之外,子 pom 中配置的另一个插件是 PMD——它的存在与否对报告没有任何影响。
如果没有完整演示重现困难的步骤的最小、完整和可验证示例,只能引用JaCoCo 常见问题解答:
为什么覆盖率报告不显示突出显示的源代码?
确保满足以下先决条件才能在 JaCoCo 覆盖率报告中突出显示源代码:
- 必须使用调试信息编译类文件以包含行号。
- 必须在报告生成时正确提供源文件。
关于第一点看到-g的选项javac,debug和debuglevelMaven的编译器插件的选项。
对于第二点,请确保源文件Example.java具有
package org.example;
Run Code Online (Sandbox Code Playgroud)
位于 src/main/java/org/example/Example.java
| 归档时间: |
|
| 查看次数: |
4381 次 |
| 最近记录: |