7

我刚刚注意到 jUnit 4.8.1 不支持测试两个布尔数组是否相等。还有很多其他的 assertArrayEquals 但没有一个可以接受两个布尔数组。

有没有合适的方法来做到这一点?我目前的想法是我必须遍历一个数组并使用类似的东西

Assert.assertTrue(arrayOne[i] == arrayTwo[i]);

有没有更清洁的方法来做到这一点?

4

2 回答 2

9

您可以使用Arrays.equals()比较两个数组,然后断言它们是等价的。

Assert.assertTrue(Arrays.equals(arrayOne, arrayTwo));

Arrays.equals()检查数组中的长度和每个元素,因此您不必担心遍历每个数组。

还有Assert.assertArrayEquals,它将为您提供数组不同的确切位置。

示例:对于这样编写的测试:

@Test
public void doArrayTest() {
    int[] foo = {1, 2, 3};
    int[] bar = {4, 5, 6};
    assertArrayEquals(foo, bar);
}

结果将是:

arrays first differed at element [0]; expected:<1> but was:<4>

Expected :1
Actual   :4
于 2012-09-19T18:53:49.563 回答
2

该功能已添加到 2014 年 12 月发布的 JUnit 4.12 中。

assertArrayEquals(boolean[] expecteds, boolean[] actuals)
assertArrayEquals(String message, boolean[] expecteds, boolean[] actuals)

供参考:这是包含提交的 PR: https ://github.com/junit-team/junit/pull/632

于 2015-01-27T10:21:23.907 回答