1

我有一个 TestNG @Factory 类,一个创建驱动程序的基类和两个包含多个 @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是两个测试类。它们扩展基类并调用基类构造函数来创建驱动程序。对于特定的 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"/>

等待你的想法:)

4

1 回答 1

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>

然而,测试依赖通常被认为是不好的做法。所有测试都应该是独立的,以便它们可以为您提供智能反馈,而不依赖于执行顺序。

于 2015-06-17T20:54:04.433 回答