【问题标题】:IntelliJ: (Coverage): Error during class instrumentation: ... java.lang.ArrayIndexOutOfBoundsExceptionIntelliJ:(覆盖):类检测期间出错:... java.lang.ArrayIndexOutOfBoundsException
【发布时间】:2020-08-07 17:09:37
【问题描述】:

这会影响 IntelliJ 2019.3 和 2020.1(截至本文的最新版本)终极版。

一些类缺少代码覆盖率,而其他类继续显示覆盖率。说的很明显,但实际上不显示覆盖率数据的类应该显示它,因为这些行被测试命中了。

看到的错误是:

[2020.04.23 23:52:20] (Coverage): Error during class instrumentation: com.<redacted>: java.lang.ArrayIndexOutOfBoundsException: 113
[2020.04.23 23:52:20] (Coverage): Error during class instrumentation: com.<redacted>: java.lang.ArrayIndexOutOfBoundsException: 144

请注意,编辑部分是实际的完全限定类路径。测试正确执行,但缺少覆盖率数据。

我已确保测试设置正确:

  • Coverage runner 是 IntelliJ IDEA
  • 覆盖率数据中包含的包和类是准确的

有人知道如何解决这个问题,以便缺失的类显示覆盖信息吗?

【问题讨论】:

  • 是的,但不是测试(我们处理的代码)是发出该错误的原因。无论错误如何,测试都会执行完成。我试图首先确定错误的根源(我们的代码无法控制)。
  • 如果可能,请在 YouTrack (youtrack.jetbrains.com) 提交一个错误,提供一个可重现的小示例项目。谢谢
  • 我们也有类似的问题,(Coverage): Error during class instrumentation: com.&lt;redacted&gt;: java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 14
  • 遇到同样的问题...
  • 为了解决这个问题,我们现在使用 Jacoco/SonarQube 在外部运行代码覆盖。

标签: java unit-testing intellij-idea code-coverage


【解决方案1】:

这似乎是报告的错误是IDEA-269838

当前标记为已解决/已修复,但未指定修复的版本。根据 JetBrains 网站,我认为这意味着修复将在 Intellij IDEA 2021.3 中发布,该版本将于本月(2021 年 11 月)到期。

【讨论】:

    【解决方案2】:

    我认为问题在于,如果您在数组上有这样的循环

    for (int i = 0; i

    那么你不应该有

    【讨论】:

    • 答案与问题并不完全相关,因为它是由编程中可能的错误推断出来的(答案的作者说“我认为问题是”)。此外,提问者没有给出澄清错误的代码块......
    • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多