如何在testng工厂类

时间:2015-11-06 20:31:10

标签: java spring testng

目前我的工厂类看起来像这样:

        @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来帮助为数据提供者生成一些测试数据。然而,在我的尝试中,春天的背景从未初始化。有谁知道我可能做错了什么,或者我可以采取另一种方法吗?

谢天谢地, 杰森

3 个答案:

答案 0 :(得分:0)

我有一些类似的问题:我的测试文件夹位于目录main之外,因此,在我将其标记为测试源资源(在Intellij IDE中)后,它开始工作。希望它有所帮助。

答案 1 :(得分:0)

我建议找到@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){
            //...
        }

答案 2 :(得分:0)

尝试将loader=AnnotationConfigContextLoader.class添加到ContextConfiguration。