Параметризованный тест JUnit+JUnitParams не работает для массивов с
Можете ли вы сказать мне, почему тест не работает? Я получил:
java.lang.IllegalStateException: при попытке создать объект класса class [Ljava.lang.Integer; не удалось найти конструктор с аргументами, совпадающими (по типу) с параметрами, указанными в параметрах.
И я не могу найти пример, когда JUnitParamsRunner работал с массивами в качестве параметров.
@RunWith(JUnitParamsRunner.class)
public class StatisticsUtilsParameterizedTest {
private Object[] getValues() {
Object[] objects = new Object[2];
objects[0] = new Integer[]{1, 2, 3};
objects[1] = 2;
return objects;
}
@Test
@Parameters(method = "getValues")
public void shouldCalcAverageOK(Integer[] arg, int expected) {
int average = StatisticsUtils.getAverage(arg);//requires an array
assertEquals(expected, average);
}
}
Есть ли способ заставить его работать с JUnitParams?
1 ответ
Решение
Попробуй это:
private Object[] getValues() {
return $(
$($(1,2,3), 2),
$($(2,3,4), 4)
);
}
Или так, как вы пытались написать
private Object[] getValues() {
Object[] objects = new Object[2];
objects[0] = new Object[]{new Integer[]{1, 2, 3},2};
objects[1] = new Object[]{new Integer[]{2, 3, 4},4};
return objects;
}
Надеюсь это поможет.