【问题标题】:Query on Junit @parameters method's return type and the test class constructor argument type查询 Junit @parameters 方法的返回类型和测试类构造函数参数类型
【发布时间】:2013-08-12 01:53:21
【问题描述】:

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

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

我错过了什么吗?

【问题讨论】:

    标签: java junit4


    【解决方案1】:

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

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

    【讨论】:

    • 哼!!很有用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多