如何确保保留TestNG.xml中指定的顺序?

时间:2012-06-14 10:08:04

标签: selenium webdriver selenium-webdriver testng

在使用TestNG + Selenium时,我无法确保类的执行顺序。下面指定的顺序(在testng.xml中)不起作用 - > ClassTwo首先执行,然后执行ClassOne。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ABC" parallel="">
  <test verbose="2" name="xyz" annotations="JDK" preserve-order="true">
    <classes>
      <class name="script.ClassOne"/>
      <class name="script.ClassTwo"/>
    </classes>
  </test>
</suite>

如何确保保留TestNG.xml中指定的顺序?

5 个答案:

答案 0 :(得分:5)

根据TestNG documentation

  

默认情况下,TestNG将按照找到的顺序运行测试   XML文件。如果您需要此文件中列出的类和方法   要以不可预测的顺序运行,请设置preserve-order属性   为假

我建议保留preserve-order属性,因为它是默认设置的。

但是,您还有两个其他选项可以强制执行测试方法/类的特定顺序:

  1. 以编程方式调用测试。
  2. 实施method interceptor,它将订购测试列表。

答案 1 :(得分:4)

您只需将并行值设置为无

<suite name="ABC" parallel="none">

它对我有用!

答案 2 :(得分:0)

你在课堂上试过@Test( dependsOnGroups= { "dummyGroupToMakeTestNGTreatThisAsDependentClass" } )吗?

看到这个帖子: TestNG & Selenium: Separate tests into "groups", run ordered inside each group

希望这有帮助!

答案 3 :(得分:0)

....活动结束后,我有同样的问题,发现自己在这里。

最后,因为个别测试已在@Test注释中标记为优先级,因此在我的情况下,您的示例script.ClassTwo的优先级高于script.ClassOne < / p>

答案 4 :(得分:0)

在TestNG中,执行顺序基于字母顺序,因此我们可以使用TestNG属性Priority,并在其中提及您要首先执行哪种class->方法。这是可以在@中给出的Priority注释属性测试注释。

示例:@Test(Priority = -1)

将数字值先执行一次。