使用ITestContext的Testng中的数据提供程序

使用ITestContext的Testng中的数据提供程序,testng,dataprovider,testng-dataprovider,Testng,Dataprovider,Testng Dataprovider,我试图使用ITestContext的数据提供程序和使用xml的组,但我遇到了错误,不知道如何解决它。请有人检查一下,让我知道 要运行的实际类低于使用另一个类中的数据提供程序类的类 package dataProvider; import org.testng.annotations.Test; public class DataProviderClassWithITestContextExample { @Test(dataProvider = "NumberInputs", group

我试图使用ITestContext的数据提供程序和使用xml的组,但我遇到了错误,不知道如何解决它。请有人检查一下,让我知道

要运行的实际类低于使用另一个类中的数据提供程序类的类

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);

}
}
数据提供程序类如下所示:

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;
        }
}

您需要在类上面使用@Guice

@Guice
public class DataProviderClassWithITestContextExample {
 ...

为此,如果没有,则需要jars javax.inject-1.jar和guice-3.0.jar

您需要将
组数组
初始化为有效数组

因此,请添加以下内容:

Object[][]groupArray=新对象[0][0]

正如@niharika_neo所指出的,您的数据提供者正在返回一个
null


TestNG中的错误消息完全可以临时生成,并将在下一个TestNG版本中提供:

错误是什么?这是错误消息[Utils][error][error]org.TestNG.TestNGException:Data Provider public java.lang.Object[]dataProvider.myDataProviderWithITestContextClass.getDataFromDataprovider(org.testng.ITestContext)必须返回Object[]或IteratorObject[],而不是class[[Ljava.lang.Object;@niharika_]您是如何调用测试的?您是通过组调用的,因为您的数据提供程序似乎返回null