比较JUnit断言中的数组,简洁的内置方式?

2022-08-31 06:15:48

有没有一种简洁的内置方法可以在JUnit中的两个类似类型的数组上执行相等的断言?默认情况下(至少在 JUnit 4 中),它似乎对数组对象本身进行实例比较。

EG,不起作用:

int[] expectedResult = new int[] { 116800,  116800 };
int[] result = new GraphixMask().sortedAreas(rectangles);
assertEquals(expectedResult, result);

当然,我可以手动完成:

assertEquals(expectedResult.length, result.length);
for (int i = 0; i < expectedResult.length; i++)
    assertEquals("mismatch at " + i, expectedResult[i], result[i]);

..但是有更好的方法吗?


答案 1

使用 org.junit.Assert 的方法:assertArrayEquals

import org.junit.Assert;
...

Assert.assertArrayEquals( expectedResult, result );

如果此方法不可用,则可能是意外地从 中导入了 Assert 类。junit.framework


答案 2

您可以使用 :Arrays.equals(..)

assertTrue(Arrays.equals(expectedResult, result));