什么样的参数应该在Test NG中接收使用Object [] []类型的数据提供者的函数?

时间:2013-07-30 08:50:48

标签: java testng

我正在尝试实现将使用多个数据提供程序的测试。首先,我创建了一个数据提供程序类

public class FreightAuthenticatedDataProvider {

    @DataProvider(name = "correctUsercorrectFreight")
    public static Object[][] correctUsercorrectFreight() {
        return new Object[][] {
                               {UserDataProvider.correctUsers(),
                                FreightDataProvider.correctFreights()}
         }; 
     }
}

在此课程中, UserDataProvider.correctUsers() FreightDataProvider.correctFreights()是集合迭代器。在此步骤中,每个集合都已正确初始化。 然后我从测试方法中引用我的数据提供者:

@Test(dataProviderClass = FreightAuthenticatedDataProvider.class, dataProvider = "correctUsercorrectFreight")
public void createSimpleFreight(User user, Freight freight) {
    // test actions
}

我的测试方法中出现以下错误数据提供程序正在尝试传递1个参数但方法... #createSimpleFreight需要2并且TestNG无法注入合适的对象

你能告诉我,在测试方法中应该传递什么类型的参数?此外,如果您知道更好的解决方案,请发表评论。

1 个答案:

答案 0 :(得分:1)

您的数据提供者中有错误。您每次测试只创建一个参数。一个调用的参数进入2D数组的相同“行”。

试试这个:

public class FreightAuthenticatedDataProvider {

    @DataProvider(name = "correctUsercorrectFreight")
    public static Object[][] correctUsercorrectFreight() {
        return new Object[][] {
              // when correctUser() and correctFreights() return Lists, 
              // than it needs to be converted, see comments
              {UserDataProvider.correctUsers(), FreightDataProvider.correctFreights()}
         }; 
     }
}