本文介绍了TestNG @Factory 注释 + 对依赖注入的了解不够的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只是在学习依赖注入,我根本不明白它的逻辑.更不用说,TestNG 的要求对我来说总是太奇怪了.
I am just learning dependency injection and I dont get its logic at all. Not to mention, TestNG's requirements are always too bizarre for me.
我有一个提供数据的类,以及一个需要它的测试类:
I have this class that provides the data, and a test class that needs it:
public abstract class AppData { // extends Mailer
@DataProvider(name = "dataProvider")
public static Object[][] setUp() throws Exception {
//prepare the data here - code.
//pass the data to the test case
Object[][] setUp = new Object[1][4];
setUp[0][0] = driver;
setUp[0][1] = wait;
setUp[0][2] = array;
setUp[0][3] = array2;
return setUp;
}
}
这是测试类
public class AppTest {
//this is my attempt to make a dependency injection, completely blindly shooting in the dark
private AppData appdata;
public AppTest (
AppData appdata
) {
this.appdata = appdata;
}
@Factory(dataProviderClass=com.fmydomain.tests.AppData.class,dataProvider="dataProvider")
public void oneUserTwoUser(WebDriver driver, WebDriverWait wait, ArrayList<ArrayList<String>> array, ArrayList<ArrayList<String>> array2) throws Exception {
}
}
当我运行它时出现此错误:
and Im getting this error when I run it:
org.testng.TestNGException:
The factory method class com.f1rstt.tests.AppTest3.oneUserTwoUser() threw an exception
at org.testng.internal.FactoryMethod.invoke(FactoryMethod.java:93)
at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:140)
我也尝试过以下方法:
public class AppTest3 {
private AppData appdata = new AppData();
public AppTest3(AppData appdata) {
this.appdata = appdata;
}
WebDriver driver = AppData.driver;
WebDriverWait wait = AppData.wait;
ArrayList<ArrayList<String>> array = AppData.array;
//ArrayList<ArrayList<String>> array2 = AppData.array2;
@Parameters({ "driver", "wait", "array" })
@Test
public void oneUserTwoUser(WebDriver driver, WebDriverWait wait, ArrayList<ArrayList<String>> array) throws Exception {
但我收到此错误:
org.testng.TestNGException:
Parameter 'driver' is required by @Test on method oneUserTwoUser but has not been marked @Optional or defined
推荐答案
这里提供了答案,在重构并安装了 DI 框架之后 Spring Framework 和 TestNG:无法传递某些参数
Answer is provided here, after refactoring and installing a DI framework Spring Framework and TestNG: unable to pass some parameters
这篇关于TestNG @Factory 注释 + 对依赖注入的了解不够的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!