jUnit тестирование двух логических массивов
Я только что заметил, что jUnit 4.8.1 не включает поддержку тестирования двух булевых массивов для равенства. Есть тонны других assertArrayEquals, но никто не принимает два булевых массива.
есть ли правильный способ сделать это? Мое текущее мышление заключается в том, что мне придется перебирать массив и использовать что-то вроде
Assert.assertTrue(arrayOne[i] == arrayTwo[i]);
есть ли более чистый способ сделать это?
2 ответов
можно использовать 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
функциональность была добавлена в JUnit 4.12, который был выпущен в декабре. 2014.
assertArrayEquals(boolean[] expecteds, boolean[] actuals)
assertArrayEquals(String message, boolean[] expecteds, boolean[] actuals)
для справки: это PR, который содержит фиксацию: https://github.com/junit-team/junit/pull/632