【发布时间】:2014-07-22 16:21:36
【问题描述】:
你能告诉我为什么测试不工作吗?我得到了:
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 一起工作?
【问题讨论】:
-
你真的可以在需要 Integer 的地方传递 Object 类型的引用吗?
-
这不是一个答案,只是一种不同的看待事物的方式。 Spock 测试框架在这种情况下要好得多(实际上,总体上比纯 JUnit 好得多) - 看看 spock-framework.readthedocs.org/en/latest/…
标签: java unit-testing junit junit4 junitparams