Java 在TestNG中,是否可能在@Factory方法之前实现@Autowired?

Java 在TestNG中,是否可能在@Factory方法之前实现@Autowired?,java,webdriver,testng,Java,Webdriver,Testng,我正在使用WebDriver和TestNG开发一个测试套件。被测试的应用程序有一个“报告菜单”,它是一组指向大量不同报告的链接。报告列表基于一系列不同的变量是动态的。我想创建一个@Factory,它为每个链接创建一个不同的测试用例。到目前为止还不错 然而,为了发现链接,我需要初始化WebDriver(转到页面,找到所有链接),但这是通过Spring IOC的注入实现的,并且自动连接(使用@Autowired)在测试运行程序的生命周期中发生得更晚。用于构造驱动程序本身的所有参数也被注入(基本url

我正在使用WebDriver和TestNG开发一个测试套件。被测试的应用程序有一个“报告菜单”,它是一组指向大量不同报告的链接。报告列表基于一系列不同的变量是动态的。我想创建一个@Factory,它为每个链接创建一个不同的测试用例。到目前为止还不错

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


那么,在跑步者生命周期的早期,是否有一种手动方法可以让注射发生?

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

由于
@Factory
方法运行得很早,只需让它返回一些“空”测试用例的预定义大小数组即可。假设测试是MyTest,只需执行以下操作:

@Factory
public Object[] factoryMethod() {
    Object[] tests = new MyTest[100];
    for (int i = 0; i < 100; i++) {
        tests[i] = new MyTest();
    }
    return tests;
}
@工厂
公共对象[]factoryMethod(){
对象[]测试=新的MyTest[100];
对于(int i=0;i<100;i++){
测试[i]=新的MyTest();
}
回归测试;
}
让测试方法,例如
test()
内部
MyTest
以优先级=1运行。在priority=0时有一个完全独立的测试方法,它使用现在实例化的
WebDriver
对象进入“菜单”页面,找到链接(希望少于100个),然后在预先创建的测试实例中“填充”缺少的参数。最后,当调用
MyTest
实例的
test()
方法时,如果没有填写参数,则抛出
SkipException
以使该“额外”实例不做任何事情。有点笨重,但很有效

基于这个答案给我的肮脏感觉,我会否决它