簡體   English   中英

如何在測試工廠類中使用彈簧自動裝配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM