我几乎没有独立的TC分组在一起。TC2拥有自己的一些数据,并且还依赖于TC1的某些数据。我无法在数据提供程序中提供对象数组以及字符串。
我尝试通过在数据提供程序中提供对象和字符串的组合。
@DataProvider(name="mydataprovider")
protected Object[][] dataprovider(){
Object[][] returnObj = new Object[this.classObject.size()][];
for(int index=0; index < this.classObject.size(); index++) {
returnObj[index] = new Object[]{this.classObject.get(index)};
}
return new Object[][]{
{"name","position"}, {returnObj}
};
}
@Test(dataProvider="mydataprovider", dependsOnMethods = {"TC1"})
public void testMethod(String name, String position, MyClassData classData)
{
//Test Steps
}
我正面临数据提供者不匹配的问题org.testng.internal.reflect.MethodMatcherException
您可以将任何内容传递给方法,这是代码的简化版本。
class MyClassData {
String abc;
MyClassData(String abc) {
this.abc = abc;
}
@Override
public String toString() {
return "MyClassData [abc=" + abc + "]";
}
}
@DataProvider(name="mydataprovider")
protected Object[][] dataprovider(){
MyClassData[] obj = new MyClassData[2];
obj[0] = new MyClassData("abc");
obj[1] = new MyClassData("def");
return new Object[][]{
{"name","position", obj}
};
//If you want to pass one obj as one param then, in which case your test method should accept MyClassData object instead of MyClassData[]
return new Object[][]{
{"name","position", obj[0]},
{"name","position", obj[1]},
};
}
@Test(dataProvider="mydataprovider")
public void testMethod(String name, String position, MyClassData[] classData)
{
System.out.println(name + " " + position + " " + classData[0]);
System.out.println(name + " " + position + " " + classData[1]);
//Test Steps
}