TestNG工厂公平地运行测试类

时间:2015-06-17 20:39:23

标签: selenium testng testng-dataprovider

我有一个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"}};
    }
}




IndTestIndTest2是两个测试类。它们扩展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;
&#13;
&#13;

等待你的想法:)

1 个答案:

答案 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>

但是,测试依赖性通常被认为是不好的做法。所有测试都应该是独立的,这样他们就可以在不依赖执行顺序的情况下为您提供智能反馈。