1

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()实际上是对象类型,但在运行时它们被分配给构造函数的参数,这些参数是对象的其他子类类型,如字符串、整数等,根据 Java 规则不兼容,例如:- 不能将字符串类型对象分配给对象类型...

那么是不是 Junit 框架将返回的值类型转换为 Object 类型以适应构造函数参数类型(例如 String)?

我在这里错过了什么吗?

4

1 回答 1

1

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

如果你好奇,上面的方法是由 JUnit 在第 186 行调用的,here (JUnit v4.11 source)

于 2013-08-12T00:02:04.503 回答