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

suv*_*dya 24 java unit-testing code-coverage intellij-idea

这会影响 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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 覆盖运行程序是 IntelliJ IDEA
  • 包含在覆盖率数据中的包和类是准确的

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

小智 -7

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

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

那么你不应该有<=。你必须这样做<,否则你的循环在数组之外

  • 答案与问题并不完全相关,因为它是由编程中可能的错误推断出来的(答案的作者说“我认为问题是”)。此外,提问者没有给出澄清错误的代码块...... (2认同)