我有两次测试需要一次又一次地运行几次。
期望的场景是:"第一次测试","第二次测试","第一次测试","第二次测试"等等...
实际情况是:"首先测试","第一次测试","第二次测试","第二次测试"。
@Test (priority = 1, invocationCount = 3)
public void first() {
System.out.println("first test");
}
@Test (priority = 2, invocationCount = 3)
public void second() {
System.out.println("second test");
}
如何实现我想要的方案?
此处的另一个要求是,在第一次测试时,Android手机应该是第一个设备,iOS手机应该是第二个。 在第二次测试中,iOS手机应该是第一个设备,Android应该是第二个。 所以这意味着我需要使用不同的xml文件。
<test name="TwoDevices - ios first">
<parameter name="appName" value="App2"/>
<parameter name ="device" value="IOS/iphone6_plus"/>
<parameter name ="secondDevice" value="ANDROID/lg4_v5"/>
<classes>
<class name="com.TestFactory"/>
</classes>
</test>
答案 0 :(得分:0)
使用@AfterMethod
注释
@Test (invocationCount=3)
public void first() {
System.out.println("first test");
}
@AfterMethod
public void second() {
System.out.println("second test");
}
答案 1 :(得分:0)
使用TestNG的depends on method
属性:
@Test (priority=1,invocationCount = 3)
public void first() {
System.out.println("first test");
}
@Test (priority=2,invocationCount = 3, dependsOnMethods = { "first" })
public void second() {
System.out.println("second test");
}
答案 2 :(得分:0)
您可以使用a factory并运行它(而不是测试类):
public class TestFactory {
@Factory
public static Object[] createInstances() {
int number = 3;
Object[] result = new Object[number];
for (int i = 0; i < number; i++) {
result[i] = new Test();
}
return result;
}
}
public class Test {
@Test
public void first() {
System.out.println("first test");
}
@Test(dependsOnMethods="first")
public void second() {
System.out.println("second test");
}
}