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
在 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 anAssertionFailedError
or a subclass thereof.
https://junit.org/junit5/docs/snapshot/api/org/junit/jupiter/api/Assertions.html