puchu
puchu

Reputation: 69

Dataprovider in Testng using ITestContext

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

Answers (2)

Krishnan Mahadevan
Krishnan Mahadevan

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

murali selenium
murali selenium

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

Related Questions