修好了-整理好了!事实证明,在向文件中添加包声明时,不应该添加完整路径(即src/main/java/com/company/app)。取而代之的是,你应该只按你在应用程序中的目录打包。因此,在util目录中,可以将其作为包util。然后jacoco正确地读取源文件并计算覆盖率
我在使用jacoco为我编写的一个小项目生成良好的代码覆盖率报告时遇到了问题。
我主要是按照这个例子来读的https://www.baeldung.com/jacoco -我已经将pom配置为具有prepare agent目标和report目标。这一切似乎都在工作,因为我正在生成一个 site/jacoco
目录包含不同类的html文件等等。
但是当我生成报告并查看 index.html
在jacoco内部,我得到了一个错误 source file x was not found during generation of report
. 这是我所有的文件。
链接到错误图片
有趣的是,当我尝试添加一个名为 Foo.java
在我的项目的根级别( com/philsfakecompany/chessapp
)没有任何包声明或管理,然后运行报告-jacoco正确链接它,生成源文件,并计算代码覆盖率。这让我怀疑我的打包结构/目录结构有问题。
在一个 GameManager.java
文件,我已经把包裹给它了 com.philsfakecompany.chessapp
,它只是反映了项目目录结构-我看到在目标文件夹中生成的二进制文件中维护了相同的结构。在jacoco中,它显示为 site/jacoco/com.philsfakecompany.chessapp
.
有人知道我做错了什么吗?我假设您应该向所有文件添加包声明,并且它们基本上反映了目录结构。我可以通过删除任何包结构并将所有文件放在根目录中来解决这个问题,但这感觉很糟糕。
我在其他堆栈溢出的帖子中也有过一番探讨——我发现最相关的是jacoco没有基于源文件生成覆盖率报告——方法名不可点击。但这并不能解决我的问题。我在生成的页面中有行号,所以我知道没有使用调试信息编译类不是问题。我怀疑这可能是软件包的问题,但我想我是在效仿他们在那篇文章中树立的榜样
我会添加我的pom下面,以及在任何错误来自那里。
<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>
如果有人有什么想法,我会非常感激的!
暂无答案!
目前还没有任何答案,快来回答吧!