2012-06-14 41 views
5

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

<!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中指定的顺序保留?

+0

蜜饯顺序为我工作..一个简单的测试。你能否发布你的代码并输出...... –

+0

这仍然是坏的。这个问题的任何解决方案? – sebnukem

回答

4

根据TestNG documentation

默认情况下,TestNG的将它们在 的XML文件中的顺序运行测试。如果你想在这个文件 列出的类和方法,以不可预知的顺序执行,在维护次序属性 设置为false

我会建议离开preserve-order属性了,因为它是默认设置。

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

  1. 调用测试程序。
  2. 执行method interceptor,这将命令测试列表。
+1

但在我的情况下,没有遵循在testng.xml中定义的执行流程。我希望执行流程应根据testng.xml.If我离开维持秩序问题仍然存在。什么可以是这个原因? – Mandy

+0

您可能正在使用较旧版本的TestNG,该标志在默认情况下未设置。确保你使用最新版本。 –

+0

我注意到,如果您按照定义中的集合中的所需顺序明确列出方法顺序,那么方法顺序工作得很好。否则,他们处于不可预测的顺序。 –

0

....事件发生后不久,但我有同样的问题,发现我自己在这里。

最后,这是因为单独的测试已经被打上了在@Test注释的优先级,所以在我的情况,但你的例子script.ClassTwo有更高的优先级比script.ClassOne

4

你只需要设置平行价值none

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

它适合我!