参数化的JUnit + JUnitParams测试不适用于具有的数组

时间:2014-07-22 16:21:36

标签: java unit-testing junit junit4 junitparams

你能告诉我为什么测试不起作用吗?我得到了:

  

java.lang.IllegalStateException:在尝试创建类类的对象时[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 个答案:

答案 0 :(得分: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;
  }

希望这有帮助。