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?
我在这里错过了什么吗?
答案 0 :(得分:1)
正如您所建议的那样,值正在被投射。该转换实际上是由Java反射API完成的,具体为:Constructor.newInstance(Object...)
。
如果您感到好奇,JUnit会在第186行here (JUnit v4.11 source)上调用上述方法。