是否有可能在TestNG中的@Factory方法之前发生@Autowired?

时间:2015-05-06 13:39:57

标签: java webdriver testng

我正在使用WebDriver和TestNG开发测试套件。被测试的应用程序有一个"报告菜单"这是一组链接到大量不同的报告。报告列表基于一堆不同的变量是动态的。我想创建一个@Factory,为每个链接创建一个独特的测试用例。到目前为止一切都很好。

然而,要发现链接,我需要初始化WebDriver(转到页面,找到所有链接),但这是通过Spring IOC注入发生的,并且自动装配(使用@Autowired)发生得更晚在测试运行的生命周期中。用于构造驱动程序本身的所有参数也被注入(基本URL,驱动程序类,下载目录等),因此在这种情况下创建WebDriver实例"手动"是不可行的。 - 必须通过使用@ContextConfiguration批注配置的Spring应用程序上下文来完成。

那么在跑步者的生命周期早期是否有手动方式让注射发生?

1 个答案:

答案 0 :(得分:0)

我对此的解决方案有点糟糕:

由于@Factory方法很早就运行了,只需让它返回一些预先定义的大小数组,其中有一些"空"测试用例。说测试是MyTest,只需:

@Factory
public Object[] factoryMethod() {
    Object[] tests = new MyTest[100];
    for (int i = 0; i < 100; i++) {
        tests[i] = new MyTest();
    }
    return tests;
}

使用测试方法,在test()MyTest运行优先级= 1。在优先级= 0时有一个完全独立的测试方法,进入&#34;菜单&#34;使用现在实例化的WebDriver对象的页面,找到链接(希望少于100个),然后去&#34;填写&#34;预先创建的测试实例中缺少的参数。最后,当调用MyTest实例的test()方法时,如果未填写参数,请抛出SkipException以获得&#34;额外&#34;实例没有做任何事情。有点笨重,但工作。

我根据它给我的肮脏感觉来回答这个答案。