Reputation: 69
I am trying to use data provider using ITestContext and Groups using xml but i am getting error and not sure how to resolve it. Can someone please check and let me know.
Actual class to run is below which consumes data provider class in another class
package dataProvider;
import org.testng.annotations.Test;
public class DataProviderClassWithITestContextExample {
@Test(dataProvider = "NumberInputs", groups = "Group20", dataProviderClass= myDataProviderWithITestContextClass.class)
public void sumOfTwoNumbersMethodOne(int num1, int num2 ) {
int sum = num1 + num2;
System.out.println(" Sum of two numbers is " + sum);
}
@Test(dataProvider = "NumberInputs", groups = "Group20", dataProviderClass= myDataProviderWithITestContextClass.class)
public void sumOfTwoNumbersMethodThree(int num1, int num2 ) {
int sum = num1 + num2;
System.out.println(" Sum of two numbers is " + sum);
}
@Test(dataProvider = "NumberInputs", groups = "Group21", dataProviderClass= myDataProviderWithITestContextClass.class)
public void sumOfTwoNumbersMethodTwo(int num1, int num2 ) {
int sum = num1 + num2;
System.out.println(" Sum of two numbers is " + sum);
}
}
Data provider class is shown below :
package dataProvider;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
public class myDataProviderWithITestContextClass {
@DataProvider(name = "NumberInputs")
public Object[][] getDataFromDataprovider(ITestContext c) {
Object[][] groupArray=null;
for(String group : c.getIncludedGroups()) {
if(group.equalsIgnoreCase("Group20")) {
groupArray = new Object[][] {
{ 22, 33 },
{ 12, 13 }
};
break;
}
else if(group.equalsIgnoreCase("Group21")) {
groupArray = new Object [][] {
{ 10, 20 },
{ 40, 20 }
};
// break;
}
break;
}
return groupArray;
}
}
Upvotes: 0
Views: 1965
Reputation: 14746
You need to initialize your groupArray
to a valid array.
So please add this :
Object[][] groupArray = new Object[0][0];
As @niharika_neo pointed out, your data provider is returning a null
value.
The error message in TestNG could definitely be improvised and will be available in the next TestNG version: https://github.com/cbeust/testng/issues/1509
Upvotes: 2
Reputation: 3927
You need to use @Guice above class
@Guice
public class DataProviderClassWithITestContextExample {
...
for this, if not have, required jars javax.inject-1.jar and guice-3.0.jar
Upvotes: -1