我刚刚注意到 jUnit 4.8.1 不支持测试两个布尔数组是否相等。还有很多其他的 assertArrayEquals 但没有一个可以接受两个布尔数组。
有没有合适的方法来做到这一点?我目前的想法是我必须遍历一个数组并使用类似的东西
Assert.assertTrue(arrayOne[i] == arrayTwo[i]);
有没有更清洁的方法来做到这一点?
您可以使用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
该功能已添加到 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