java是否可以在TestNG dataprovider类中注入变量
我有一个测试类和一个单独的数据提供程序类,如下所示。我的测试类扩展了AbstractTestNGSpringContextTests
,所以我可以在测试类中注入变量。但当我尝试在数据提供程序类中注入变量时,它不起作用。(我甚至尝试用AbstractTestNGSpringContextTests
扩展它)。在调试时,我可以看到只有在实例化测试类时才会发生自动连接
@Test(dataProviderClass = MyDataProvider.class)
public class MyTest extends AbstractTestNGSpringContextTests{
@Inject
XYZ x; //works
@Test(dataProvider = "dataSet1")
public void testMethod1(){
//
}
}
public class MyDataProvider {
@Inject
XYZ x;// not working
@DataProvider
public Object[][] dataSet1(){
//
}
}
然后我试图通过将属性设置为ITestContext
@Test(dataProviderClass = MyDataProvider.class)
public class MyTest extends AbstractTestNGSpringContextTests{
@Inject
XYZ x;
@BeforeClass
public void beforeClass(ITestContext context){
context.setAttribute("x",x);
}
@Test(dataProvider = "dataSet1")
public void testMethod1(){
//
}
}
public class MyDataProvider {
@DataProvider
public Object[][] dataSet1(ITestContext context){
XYZ x = (XYZ) context.getAttribute("x");
}
}
尽管上面的方法可以工作,但它看起来像是一种变通方法,而且我还需要向每个数据提供程序方法添加ITestContext
参数
所以,我想知道
- 是否可以在数据提供程序类内部进行注入李>
- 有更好的方法吗?(与before类方法类似,是否有任何before方法可用于数据提供程序,以便我不需要将
ITestContext
传递给每个数据提供程序方法)
共 (0) 个答案