JUnitParamsRunner - 无法将变量参数或对象数组传递给test()?

时间:2015-04-22 14:49:11

标签: junit

我发现我无法声明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
}

1 个答案:

答案 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") } } };
}