我有一个TestNG @Factory类,一个创建驱动程序的Base类和两个包含多个@Test方法的测试类来运行测试。鉴于我的@Factory类如下。
public class SampleFactory {
@Factory(dataProvider="DeviceDetails")
public synchronized Object[] factoryMethod(String deviceID){
return new Object[] {new IndTest(deviceID),new IndTestTwo(deviceID)};
}
@DataProvider(name="DeviceDetails",parallel=true)
public Object[][] passDeviceID(){
return new Object[][] {{"02157DF2DA5A1C09"},{"D5588B67"}};
}
}

IndTest
和IndTest2
是两个测试类。它们扩展Base类并调用Base类构造函数来创建驱动程序。在特定时间,只能为特定的deviceID使用一个驱动程序实例。
我面临的问题是IndTest和IndTest2都在测试尝试同时在特定设备上运行不同测试的同时运行。我需要首先调用IndTest类,然后在设备1和设备2上的该类中运行测试,然后移动到IndTest2并执行相同的执行。下面是我目前使用的TestNG xml。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test_Suite" skipfailedinvocationcounts="false" junit="false" parallel="classes"
data-provider-thread-count="100" annotations="JDK" group-by-instances="true"/>
&#13;
等待你的想法:)
答案 0 :(得分:1)
看起来你需要调整一下TestNG.xml。提供以下内容
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test_Suite" >
<test name="something">
<classes>
<class name="something.IndTest" />
<class name="something.IndTest2" />
</classes>
</test>
</suite>
但是,测试依赖性通常被认为是不好的做法。所有测试都应该是独立的,这样他们就可以在不依赖执行顺序的情况下为您提供智能反馈。