gpt4 book ai didi

java - JaCoCo 报告生成出错

转载 作者:行者123 更新时间:2023-12-03 09:31:45 28 4
gpt4 key购买 nike

我目前正在尝试将 JaCoCo 添加为我的 Spring Boot maven 项目的依赖项,以查看我的单元测试的代码覆盖率。但是,当我运行测试时,它失败并显示错误。

 Failed to execute goal org.jacoco:jacoco-maven-plugin:0.8.3:report (report) on project test-rest-service: An error has occurred in JaCoCo report generation. Error while creating report: malformed input around byte 2 -> [Help 1]

所有测试都通过而没有失败,所以这不是问题。

JaCoCo 的依赖项是:
   <plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>

生成了 JaCoCo.exec 文件,但我无法打开它来生成报告。我究竟做错了什么?

最佳答案

我一直有类似的问题。尽管这个问题已经有几个月的历史了,但我仍在写作,因为弄清楚这个问题非常耗时,而且没有多少谷歌搜索为我提供了直接的答案,但只能提供我必须自己拼凑的线索。

在我的情况下,错误大约每三个构建发生一次。该错误也不总是与此问题中所述相同:字节数正在更改,有时我只是收到了 EOFException。

我的评估中有一定程度的猜测。以下是我调查的底线:

  • 该错误似乎是由于 JaCoCo 无法(完全)写入 JaCoCo.exec 而发生的。文件,可能是由于相应的 VM 在写入操作完成(或开始)之前被终止。请注意,JaCoCo 仅在 VM 退出时写入所述文件。
  • 如果您进行多线程处理,则可能会发生这种情况,因为仍在后台运行的线程导致 maven-surefire-plugin 超时。或 maven-failsafe-plugin触发。确保所有线程运行完成。
  • 如果问题是由您的机器异常缓慢引起的,您应该能够通过设置 forkedProcessExitTimeoutInSeconds 来解决该问题。一个大于默认值的选项 30 maven-surefire-plugin 中的秒数(或以其他方式大于您当前设置的值)或 maven-failsafe-plugin .这就是我的情况,因为我被迫在一个非常慢且内存受限的 VM 上运行构建。
  • 确保 forkCount属性大于 0在您的 maven-surefire-pluginmaven-failsafe-plugin还有那个forkMode未设置为 never因为 JaCoCo 需要在 fork 进程上工作,以便写入文件并在之后提取文件。

  • 示例片段:
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <configuration>
    <forkedProcessExitTimeoutInSeconds>60</forkedProcessExitTimeoutInSeconds>
    <forkCount>1</forkCount>
    </configuration>
    </plugin>

    引用:
  • maven-surefire-plugin -> forkedProcessExitTimeoutInSeconds
  • improperly terminated JaCoco.exec hint
  • JaCoCo and forkCount/forkMode
  • 关于java - JaCoCo 报告生成出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381133/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com