9

在使用 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 中指定的顺序?

4

5 回答 5

7

您只需将并行值设置为无

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

这个对我有用 !

于 2015-03-12T13:19:56.307 回答
6

根据TestNG 文档

默认情况下,TestNG 将按照它们在 XML 文件中的顺序运行您的测试。如果您希望此文件中列出的类和方法以不可预知的顺序运行,请将 preserve-order 属性设置为 false

我建议将preserve-order属性排除在外,因为它是默认设置的。

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

  1. 以编程方式调用测试。
  2. 实现方法拦截器,它将对测试列表进行排序。
于 2012-06-14T11:47:12.733 回答
0

....Quite a bit after the event but I had the same problem and found myself here.

In the end it was because the individual tests had been marked with a priority in the @Test annotation, so in my case but your example script.ClassTwo had a higher priority than script.ClassOne

于 2013-04-12T14:02:32.887 回答
0

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

请参阅此线程: TestNG 和 Selenium:将测试分成“组”,在每个组内按顺序运行

希望这可以帮助!

于 2012-06-15T00:53:22.130 回答
0

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

示例:@Test(优先级=-1)

较小的数值将首先执行。

于 2018-07-26T09:53:33.623 回答