0

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

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 无法注入合适的对象

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

4

1 回答 1

1

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

试试这个:

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()}
         }; 
     }
}
于 2013-07-30T08:57:42.260 回答