我有一个Maven多模块项目,其中JaCoCo不基于源文件生成报告。
一般来说,如果MyService
是被测试的类,它将以两种方式报告,一种是通过文件名MyService.html
在适当的基于包的位置,其中包含一个方法列表,以数字和图表的形式给出覆盖范围的整体图片-列出类中的所有方法,每个方法都有一个指向另一个htmlMyService.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>
儿童POM:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
尝试切换JaCoCo版本,但没有任何帮助,现在坚持使用最新的0.8.2。Maven是最新的-3.6.0。除此之外,子pom中配置的另一个插件是PMD,其存在或不存在对报告没有任何影响。
类似问题:Gradle JaCoCo 插件 - 类和方法名称在报告中不可点击
在我的例子中,
我要做的是定义
例如:现在链接正在工作,在我的情况下,我将覆盖范围报告数据/文件放在自定义文件夹(覆盖范围/jaco-report)中,而不是使用默认文件夹。您可以使用许多其他配置字段/设置。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<sourceDirectory>src/main/java</sourceDirectory>
<!-- see above -->
<outputDirectory>coverage/jacoco-report</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
谢谢你!@戈丁
确保指定源目录
也很重要。在我的例子中-使用<code>Groovy
<build>
<sourceDirectory>src/main/groovy</sourceDirectory>
<plugins> ... </plugins>
</build>
这是我案例中问题的组合。源目录和使用调试编译选项。再次感谢。
在缺乏最小的、完整的、可验证的例子来充分展示重现你的困难的步骤的情况下,只能引用JaCoCo FAQ:
确保满足以下先决条件,以便在JaCoCo覆盖率报告中突出显示源代码:
关于第一点参见< code>javac的< code>-g选项,maven-compiler-plugin的< code>debug和< code>debuglevel选项。
对于第二点,确保源文件< code>Example.java包含
package org.example;
位于 src/主/爪哇/组织/示例/示例中.java
我试图设置为我的项目的代码覆盖 我的项目基于 下面是我项目的 然后我运行并看到以下内容 然后我运行,我看到 问题 -配置中有什么不正确 -如何生成报告? 谢啦
我创建了一个使用Gradle的简单Java项目。我添加了一些单元测试和集成的JaCoCo插件来查看代码覆盖率。但是,在HTML报告中,我无法单击类名来查看覆盖了哪些行和分支。我有另一个项目,它使用Maven和JaCoCo来实现这个功能。这是Gradle插件的局限性,还是我做错了什么?这是我的身材。格雷德尔: 这是我看到的:
当运行Gradle的Jacoco插件时,我在一组选定的类上得到零代码覆盖率报告。我已经确认测试这些类的所有单元测试都已成功运行。 非常有趣的是,EclEmma在Eclipse中生成了正确的代码覆盖率结果。我已经确认这两个工具使用的是相同版本的Jacoco。 我想知道这两种工具的区别是什么?我需要Gradle Jacoco插件的额外配置吗。 编辑:我的Gradle Jacoco输出显示“com类的执
我一直试图从生成的覆盖报告中删除某些文件。我尝试了以下事情: 修改代码: 也试过, 我试图找到解决方案时提到的许多链接中的一些: Maven Jacoco配置-从不工作的报告中排除类/包 Jacoco如何正确排除包 如何在子项目中添加更多Jacoco排除? http://tdongsi.github.io/blog/2017/09/23/jacoco-in-maven-project/ 但是每次我
我从Sonar GitHub repo中的“java gradle simple”示例开始: https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/gradle/java-gradle-simple 我已经将jacoco插件添加到我的构建中。gradle文件在一个空文件中查看单元测试覆盖率