查询Junit @parameters方法的返回类型和测试类构造函数参数类型

时间:2013-08-10 03:41:45

标签: java junit4

Junit参数化测试通常返回Object数组的集合,但测试类构造函数类型可以通过任何方式返回吗?

例如: -

//Some class constructor
public parametrization (String username, String password, int pincode){
    this.username=username;
    this.password=password;
    this.pincode=pincode;
}

@Parameters
public static Collection<Object[]> getdata(){
    Object[][] data = new Object[2][3];  
    //row 1st
    data [0][0] = "usernamea";
    data [0][1] = "passa";
    data [0][2] = new Integer(111);
   }

正如您所看到的,方法getdata()返回的参数实际上是对象类型,但在运行时它们被赋予构造函数的参数,这些参数是Object,Integer等对象的其他子类类型。根据Java规则不兼容,例如: - 字符串类型对象不能分配给对象类型...

Junit框架是否类型将返回的值转换为Object类型以构造构造函数参数类型如String?

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

正如您所建议的那样,值正在被投射。该转换实际上是由Java反射API完成的,具体为:Constructor.newInstance(Object...)

如果您感到好奇,JUnit会在第186行here (JUnit v4.11 source)上调用上述方法。