如果有多个类,则具有优先级的@test无法运行正确的测试

时间:2018-12-28 03:57:08

标签: annotations testng

我有一个testng.xml文件,我有三个类,所有三个类的测试优先级都从1到4(@Test(priority = 1到4))。在运行它时,来自不同类的优先级为1的测试会首先运行并影响我的测试流程。我可以使用哪种testng注释来避免这种情况?

@Test(priority=1)在多个类别中给出

2 个答案:

答案 0 :(得分:0)

使用保留顺序

 <test name="Test" preserve-order="true">

因此,在testng.xml中指定的所有类将以指定的顺序运行,然后在每个类中,方法将按照优先级运行。

答案 1 :(得分:0)

在testng中,如果您在这些类中的测试中设置了优先级,则在testng.xml中提到的类的顺序无关紧要。测试将根据优先级运行(priority = 1测试将首先运行,然后priority = 2继续运行)。

要解决上述问题,您需要从类内部的测试中删除优先级,然后按照要执行这些类的顺序将这些类放入testng中,并将<preserve-order="true">放入testng xml中。

如果您还想按特定顺序在类内运行测试,则可以在类内提到的测试之间使用dependsOnMethods,例如:

@Test(dependsOnMethods = {"parentTest"})
public void childTest() {       
}

@Test
public void parentTest() {      
}

在上述情况下,当仅通过parentTest()时,将执行childTest()。