我有一个基础测试类用于我的测试,它在每次测试之前进行初始化工作。
这是代码
public class BaseTestParameters {
MyObj myObj;
@DataProvider(name = "apiType")
public static Object[][] createData() {
return new Object[][] {{"type", "1"},{"type","2"}};
}
@BeforeMethod()
@Factory(dataProvider = "apiType")
public void setup(String type,String param) throws Exception {
myObj = createMyObject(param);
}
}
我的所有测试类都扩展了这个基类,他们使用myObj
进行测试。
myObj
有两种不同的创作方式(取决于参数)。所有测试都会运行两次。每个方式构成myObj
。
如何启用此方案?使用@Factory
注释意味着我需要从该方法返回Object[]
,但我不必从该方法返回任何测试类。
您可以使用@Parameters
注释,但是您必须在testng,xml
中指定值,这意味着您必须为每组参数分别设置testng.xml
。
这是一个例子:
app test.Java
public class AppTest {
@Parameters({"par1", "par2"})
@BeforeMethod()
public void setUp(String a, String b) {
System.out.println("a = [" + a + "], b = [" + b + "]");
}
@Test
public void testApp() {
}
}
的testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="Run1" >
<parameter name="par1" value="val"/>
<parameter name="par2" value="anotherval"/>
<packages>
<package name="dummy.java" />
</packages>
</test>
<test name="Run2" >
<parameter name="par1" value="newValue"/>
<parameter name="par2" value="yetAnotherVal"/>
<packages>
<package name="dummy.java" />
</packages>
</test>
</suite>