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版中,谢谢