[英]Spring @Autowiring, how to use an object factory to choose implementation?
[英]How to use spring autowiring in a testng factory class
目前我有一個工廠類,如下所示:
@ContextConfiguration(classes = BeanConfig.class)
public class FactoryClass extends AbstractTestNGSpringContextTests {
@Autowired
public Bean bean;
@Factory(dataProvider="dataProvider")
public Object[] createTest(int a, int b) {
return new Object[]{new FactoryTestClass(a, b)};
}
@DataProvider(name="dataProvider",parallel=true)
public Object[][] passInts(){
bean.method();
return new Object[][]{{2,2},{2,3},{2,4},{2,4}};
}
@BeforeSuite
public void beforeSuite(){
System.out.println("before suite");
}
}
我的目標是使用 spring 的自動裝配功能,這樣我就可以使用 bean 來幫助為數據提供者生成一些測試數據。 然而,在我的嘗試中,spring 上下文永遠不會初始化。 有誰知道我可能做錯了什么,或者我可以采取其他方法嗎?
謝謝你,傑森
我有一些類似的問題:我的測試文件夾位於 main 目錄之外,因此,在我將其標記為測試源資源(在 Intellij IDE 中)之后,它開始工作。 希望能幫助到你。
我建議找到@DataProvider
與@Test
方法相同的類。 這種方法我從來沒有遇到過問題。
在一個測試類中擁有各種@Test
方法和各種dataProvider
是有效的用法。 @Test
方法將指定在@Test
注釋參數中使用哪個 dataProvider。
例子:
@DataProvider(name="dataProvider",parallel=true)
public Object[][] passInts(){
bean.method();
return new Object[][]{{2,2},{2,3},{2,4},{2,4}};
}
@Test(dataProvier="dataProvider")
public test(int param1, int param2){
//...
}
嘗試將loader=AnnotationConfigContextLoader.class
添加到 ContextConfiguration。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.