Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @类级别的testng中的数据提供程序_Java_Testng - Fatal编程技术网

Java @类级别的testng中的数据提供程序

Java @类级别的testng中的数据提供程序,java,testng,Java,Testng,我尝试运行@Test方法,但在类级别使用数据提供者属性定义@Test,并将方法提到@Test,请查看下面的代码以了解更多信息 import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @Test(dataProvider="Data") public class TestAtClassLevel{ @Test public void testCase(St

我尝试运行
@Test
方法,但在类级别使用
数据提供者
属性定义
@Test
,并将方法提到
@Test
,请查看下面的代码以了解更多信息

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

@Test(dataProvider="Data")
public class TestAtClassLevel{

    @Test
    public void testCase(String value) {
        System.out.println("Test case");
    }

    @DataProvider(name="Data")
    public Object[][] dataProvider(){
        String value[][]=new String[2][1];
        value[0][0]="FirstValue";
        value[1][0]="SecondValue";
        return value;
    }
}
我尝试运行上述代码,但出现以下异常:

[Utils] [ERROR] [Error] org.testng.TestNGException: 
Cannot inject @Test annotated Method [testCase] with [class java.lang.String].
从方法级别删除
@Test
后,我可以运行上述代码


为什么即使我在类级别声明了数据提供程序名称,我也会得到一个异常?

如果您希望
testCase
方法从数据提供程序获取数据,那么请针对测试方法本身而不是在类级别使用它。或者针对方法删除
@Test
,而不删除类级别的注释,以便方法级别的注释不会覆盖类级别的配置

@Test(dataProvider=“Data”)
公共void测试用例(字符串值){
System.out.println(“测试用例”);
}

当数据提供程序在不同的类中定义时,提及
dataProviderClass
在类级别非常有用,并且此属性将指示testng在提及的类中查找数据提供程序。不过,您仍需要在方法级别本身提到特定的数据提供程序名称。

如何在运行时为
字符串值
变量提供值@JudeNiroshan这个问题对于testNG比junit更为具体。感谢gautham的回答,但如果没有将@Test添加到方法级别并运行上面的代码,那么testNG将使用dataprovider,这将在课堂上提到level@ankushpawar一旦您在方法级别设置了
@测试
,它将覆盖类级别的
@Test
@ankushpawar如果在类级别上有注释,并且在方法级别上没有任何特定的重写要求,则无需使用
@Test
注释该方法。好的,如果我的理解有误,请澄清我,这里我了解到,如果将相同的属性添加到类级别和方法级别,那么TestNG将同时使用类级别和方法级别中提到的值,例如,如果我们在类级别中添加值为“Data”的groups属性,并添加group=“Test”那么相应的方法应该属于这两种情况。这个问题没有反映在TestNg 7.4.0版中,谢谢