Reputation: 251
I have few dependent TCs grouped together. The TC2 has some data of its own and also dependent on some of the data from TC1. I am unable to provide an array of Object along with String in the data provider.
I tried by providing a mix of Object and String in data provider.
@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
}
I am facing the issue of Data provider mismatch org.testng.internal.reflect.MethodMatcherException
Upvotes: 1
Views: 1075
Reputation: 8531
You can pass anything to the methods, a simplified version of your code.
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
}
Upvotes: 1