0
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Parallel test runs" parallel="tests" thread-count="2">

<test name="ModuleTest">
    <classes>
        <class name="com.qa.testcases.AccountTest" ></class>
        <class name="com.qa.testcases.DeviceTest" ></class>
    </classes>
</test> 


 <test name="UserTest">
    <classes>
        <class name="com.qa.testcases.UserTest" ></class>
    </classes>
</test>  

</suite>  

我想按顺序运行AccountTestDevice Test,并行运行ModuleTest和UserTest 。并行执行正在发生,但AccountTestDevice Test没有以Sequential运行,而是开始以Parallel运行。有没有办法让它们按顺序运行?

我有两个测试类如下

1.AccountTest

public class AccountTest {

@BeforeTest
    public void setUp() {
}

@Test(Priority=0)
public void createAccount(){
}

@Test(Priority=1)
public void editAccount(){
}

@Test(Priority=2)
public void deleteAccount(){
}


@AfterTest
    public void closeSession() {
}

}

2.设备测试

public class DeviceTest {

    @BeforeTest
        public void setUp() {
    }

    @Test(Priority=0)
    public void createDevice(){
    }

    @Test(Priority=1)
    public void editDevice(){
    }

    @Test(Priority=2)
    public void deleteDevice(){
    }


    @AfterTest
        public void closeSession() {
    }

    }

问题是首先执行 AccountTest 的@BeforeTest方法,而不是转到 AccountTest 的@Test(priority=0),而是执行 DeviceTest 的@BeforeTest方法。我希望在进入 DeviceTest 之前先运行整个 AccountTest 类

4

2 回答 2

0

为此,您可以尝试使用一个 xml 文件进行以下操作:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Parallel test runs" parallel="tests" thread-count="2">
<test name="ModuleTest" parallel="false">
<classes>
<class name="com.qa.testcases.AccountTest" ></class>
<class name="com.qa.testcases.DeviceTest" ></class>
</classes>
</test>
<test name="UserTest" parallel="false">
<classes>
<class name="com.qa.testcases.UserTest" ></class>
</classes>
</test>
</suite>
于 2014-03-10T08:34:21.437 回答
0

为此,您需要将@BeforeTest注释更改AccountTestDeviceTest@BeforeClass

根据 testng.org

@BeforeTest:被注释的方法将在任何属于标签内的类的测试方法运行之前运行

@BeforeClass:被注解的方法会在当前类的第一个测试方法被调用之前运行。

于 2013-11-14T10:37:54.313 回答