Java 在TestNG中,是否可能在@Factory方法之前实现@Autowired?
我正在使用WebDriver和TestNG开发一个测试套件。被测试的应用程序有一个“报告菜单”,它是一组指向大量不同报告的链接。报告列表基于一系列不同的变量是动态的。我想创建一个@Factory,它为每个链接创建一个不同的测试用例。到目前为止还不错 然而,为了发现链接,我需要初始化WebDriver(转到页面,找到所有链接),但这是通过Spring IOC的注入实现的,并且自动连接(使用@Autowired)在测试运行程序的生命周期中发生得更晚。用于构造驱动程序本身的所有参数也被注入(基本url、驱动程序类、下载目录等),因此在这种情况下“手动”创建WebDriver实例是不可行的——必须通过使用@ContextConfiguration注释配置的Spring应用程序上下文来完成Java 在TestNG中,是否可能在@Factory方法之前实现@Autowired?,java,webdriver,testng,Java,Webdriver,Testng,我正在使用WebDriver和TestNG开发一个测试套件。被测试的应用程序有一个“报告菜单”,它是一组指向大量不同报告的链接。报告列表基于一系列不同的变量是动态的。我想创建一个@Factory,它为每个链接创建一个不同的测试用例。到目前为止还不错 然而,为了发现链接,我需要初始化WebDriver(转到页面,找到所有链接),但这是通过Spring IOC的注入实现的,并且自动连接(使用@Autowired)在测试运行程序的生命周期中发生得更晚。用于构造驱动程序本身的所有参数也被注入(基本url
那么,在跑步者生命周期的早期,是否有一种手动方法可以让注射发生?我对此有点糟糕的解决方案是: 由于
@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
以使该“额外”实例不做任何事情。有点笨重,但很有效
基于这个答案给我的肮脏感觉,我会否决它