我正在尝试实现将使用多个数据提供程序的测试。首先,我创建了一个数据提供程序类
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无法注入合适的对象
你能告诉我,在测试方法中应该传递什么类型的参数?此外,如果您知道更好的解决方案,请发表评论。
答案 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()}
};
}
}