IntelliJ: (覆盖范围): 类工具期间出错: ...java.lang.ArrayIndexOutOfBoundsException

这会影响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

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

我已确保正确设置测试以进行覆盖:

  • 覆盖率运行器是IntelliJ IDEA
  • 要包含在覆盖范围数据中的软件包和类是准确的

有没有人知道如何克服这个问题,以便缺失的类显示覆盖范围信息?


答案 1

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

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


答案 2

我认为问题是,如果你在数组上有一个这样的循环。

for (int i = 0; i <= arr.length; i ++)

那么你不应该有<=。您必须<执行此操作,否则您的循环位于数组之外


推荐