我发现我无法声明public void test(Obj...objects)
并使用JUnitParamsRunner来参数化我在运行时抛出的test..exception。
但是,如果我将其更改为public void test(Obj obj1, Obj obj2)
,它的工作正常
任何的想法?以下是代码:
private static Object[] testingParam() {
return new Object[] { new Object[] { new Obj("123"), new Obj("123") } ];
}
@Test
@Parameters(method = "testingParam")
public void test(Obj...objects){
//do some test
}
答案 0 :(得分:0)
虽然我没有机会对此进行测试,但似乎based on the usage documentation您可能需要一个Obj[]
数组而不是Object[]
数组来匹配vararg。请注意,Object[]
和Obj[]
不是协变的,不能互相投射。
private static Object[] testingParam() {
return new Object[] { new Obj[] { new Obj("123"), new Obj("123") } };
}
相反,如果你试图忽略varargs并将参数视为一个天真的数组,你可能需要第三个数组包装器:
private static Object[] testingParam() {
return new Object[] { // <-- call the testing method once
new Object[] { // <-- with this array of parameters
new Obj[] { // <-- and the first parameter is a 2-element Obj array
new Obj("123"), new Obj("123") } } };
}