我有一个用于测试的基础测试类,该类在每次测试之前都会进行初始化工作。
这是代码
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[]
,但不必从该方法返回任何测试类。
答案 0 :(得分:4)
您可以使用@Parameters
批注,但是必须在testng,xml
中指定值,这意味着每组参数都必须有单独的testng.xml
。
以下是示例:
AppTest.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>