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

Java 什么样的参数应该接收使用Test NG中Object[][]类型的数据提供程序的函数?,java,testng,Java,Testng,我正在尝试实现使用多个数据提供者的测试。首先,我创建了一个数据提供程序类 public class FreightAuthenticatedDataProvider { @DataProvider(name = "correctUsercorrectFreight") public static Object[][] correctUsercorrectFreight() { return new Object[][] {

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

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


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

您的数据提供程序中有一个错误。每个测试只创建一个参数。一次调用的参数进入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()}
         }; 
     }
}

可以我已经修复了FreightAuthenticatedDataProvider类。现在出现了“参数类型不匹配”错误。我应该怎么做才能以正确的方式在测试方法中提取这些数据呢?哦,我猜correctUsers()和correctFreights()会返回列表。您需要将列表转换为用户货运对。简单想想“一行=一个方法调用”。它就像{user1,freight1},{user2,freight2},…}