Java 参数化JUnit+;JUnitParams测试不适用于具有
你能告诉我为什么考试不起作用吗?我得到: java.lang.IllegalStateException:尝试创建类[Ljava.lang.Integer]的对象时,找不到参数与参数中给定参数匹配(类型)的构造函数 我找不到JUnitParamsRunner使用数组作为参数的例子Java 参数化JUnit+;JUnitParams测试不适用于具有,java,unit-testing,junit,junit4,junitparams,Java,Unit Testing,Junit,Junit4,Junitparams,你能告诉我为什么考试不起作用吗?我得到: java.lang.IllegalStateException:尝试创建类[Ljava.lang.Integer]的对象时,找不到参数与参数中给定参数匹配(类型)的构造函数 我找不到JUnitParamsRunner使用数组作为参数的例子 @RunWith(JUnitParamsRunner.class) public class StatisticsUtilsParameterizedTest { private Object[] getVa
@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一起工作?试试以下方法:
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;
}
希望这能有所帮助。你真的能在需要整数的地方传递Object类型的引用吗?这不是一个答案,只是一种不同的看待事物的方式。Spock测试框架在这种情况下更好(实际上,一般来说比纯JUnit好得多)-看看