0

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;
        }
}
puchu
  • 69
  • 1
  • 9
  • Whats the error? – niharika_neo Aug 21 '17 at 06:47
  • This is the error message [Utils] [ERROR] [Error] org.testng.TestNGException: Data Provider public java.lang.Object[][] dataProvider.myDataProviderWithITestContextClass.getDataFromDataprovider(org.testng.ITestContext) must return either Object[][] or Iterator<Object>[], not class [[Ljava.lang.Object; @niharika_neo – puchu Aug 21 '17 at 07:43
  • How are you invoking your tests - are you invoking by groups coz it seems your dataprovider is returning null – niharika_neo Aug 21 '17 at 08:28

2 Answers2

2

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

juherr
  • 5,640
  • 1
  • 21
  • 63
Krishnan Mahadevan
  • 14,121
  • 6
  • 34
  • 66
-1

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

murali selenium
  • 3,847
  • 2
  • 11
  • 20