Jacoco - 生成报告,但不链接源文件 - 包结构不正确? - 固定

问题描述

已修复 - 已排序!事实证明,当您向文件添加包声明时,不应添加完整路径(即 src/main/java/com/company/app)。相反,您应该只按应用程序中的任何目录进行打包。因此,在 util 目录中,您实际上可以将它作为包 util 使用。然后Jacoco正确读取源文件并计算覆盖率


我在使用 Jacoco 为我编写的一个小项目生成良好的代码覆盖率报告时遇到了问题。

主要遵循示例,我在这里阅读了 https://www.baeldung.com/jacoco - 我已经将我的 pom 配置为具有准备代理目标和报告目标。这一切似乎都有效,因为我正在生成一个 site/jacoco 目录,其中包含不同类的 html 文件等等。

但是,当我生成报告并查看 jacoco 中的 index.html 时,我收到错误 source file x was not found during generation of report。这是我所有的文件

Link to error picture

有趣的是,当我尝试在我的项目(Foo.java)的根级别(com/philsfakecompany/chessapp)中添加一个名为 GameManager.java文件而没有任何包声明或管理,然后运行报告时 - Jacoco 正确链接它,生成文件和计算的代码覆盖率。这让我怀疑我的包装结构/目录结构有问题。

com.philsfakecompany.chessapp 文件中,我给了它包 site/jacoco/com.philsfakecompany.chessapp,它只反映了项目目录结构 - 我看到在目标文件夹中生成的二进制文件中维护了相同的结构。在 jacoco 中,它以<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</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> </execution> </executions> <configuration> </configuration> </plugin> 中的几个文件的形式出现。

有人知道我在这里做错了什么吗?我假设您应该向所有文件添加包声明,并且它们基本上反映了目录结构。我可以通过删除任何包结构并将我的所有文件放在根目录中来解决这个问题 - 但这感觉很糟糕。

我对其他堆栈溢出帖子进行了研究 - 我发现最相关的是 JaCoCo Not Generating Coverage Reports based on Source File - Method names not clickable。 然而它并没有解决我的问题。我在生成页面中有行号 - 所以我知道这不是使用调试信息编译的类的问题。我怀疑这可能是包的问题,​​但我想我正在遵循他们在该帖子中设置的示例

我也会在下面添加我的 POM,以防出现任何错误

map<string,int> sourceMap

如果有人有任何想法,我将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)