Параметризованный тест 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;
  }

Надеюсь это поможет.

Другие вопросы по тегам