Junit5:为什么使用 assertArrayEquals() 会触发 AssertionFailedError?

Junit5: Why does using assertArrayEquals() trigger an AssertionFailedError?

在 Eclipse 中做一些 JUnit5 测试,我有一个 returns 和 byte[] 的例程。所以我使用 assertArrayEquals 来比较结果。然而,测试并没有因不匹配(红色状态,增加 Errors:)而失败,而是失败(蓝色状态,增加 Failures:)。异常跟踪看起来像这样:

org.opentest4j.AssertionFailedError: array contents differ at index [4], expected: <105> but was: <77>
    at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:48)
    at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:36)
    at org.junit.jupiter.api.AssertArrayEquals.failArraysNotEqual(AssertArrayEquals.java:434)
    at org.junit.jupiter.api.AssertArrayEquals.assertArrayEquals(AssertArrayEquals.java:214)
    at org.junit.jupiter.api.AssertArrayEquals.assertArrayEquals(AssertArrayEquals.java:72)
    at org.junit.jupiter.api.AssertArrayEquals.assertArrayEquals(AssertArrayEquals.java:64)
    at org.junit.jupiter.api.Assertions.assertArrayEquals(Assertions.java:565)
[...]

在我的具体情况下,预期结果是 "Mississippi",而实际结果是 "MissMissppi"。那么我应该如何正确制定测试呢? 我是 运行 具有 -ea 的 JRE,因为我正在使用断言。

示例(更改测试场景,但问题相同):

测试如期失败。

array contents differ at index [4]

索引 [4] 是什么?

"Miss[i]ssippi"

Dec: 105 Hex: 0x69 Char: "i"

"Miss[M]issppi"

Dec: 77 Hex: 0x4D Char: "M"

为什么失败并显示 AssertionFailedError

[org.junit.jupiter.api.]Assertions is a collection of utility methods that support asserting conditions in tests. [...] Unless otherwise noted, a failed assertion will throw an AssertionFailedError or a subclass thereof.

https://junit.org/junit5/docs/snapshot/api/org/junit/jupiter/api/Assertions.html