我在基于优先级运行测试方法时面临问题。下面是我的代码片段
Class TestHarness{
@BeforeSuite
setUP(){ }
@AfterSuite
tearDown(){}
}
XYZ extends TestHarness{
@Test(Priority=1)
verifyXYZ{}
}
ABC extends TestHarness{
@Test(Priority=2)
verifyABC{}
}
的testng.xml
<suite name="SmokeTestSuite">
<listener class-name="TestResultListener" />
<test name="SmokeTests" >
<classes>
<class name="XYZ" />
<class name="ABC"/>
</classes>
</test>
</suite>
ABC.verifyABC()
方法在XYZ.verifyXYZ()
之前执行。尽管preserve-order
中的testng.xml
未设置为false。
主要意图根据testng.xml
中定义的测试类顺序运行所有测试。尝试以下解决方案,但没有工作:
通过扩展testng.xml
重新优先考虑所有类的测试方法(在IMethodInterceptor
中)。
结果:在这种情况下,执行顺序是,
i. BeforeSuite Method
ii. ABC.verifyABC method
iii. override intercept method
指定所有测试类的所有测试方法的优先级,但不知何故,这对我来说也不起作用。
我使用的是testng 6.11版本。在这种情况下,任何人都可以帮助我。
提前致谢!
答案 0 :(得分:0)
preserve-order
不如priority
重要:
订单功能的层次结构(从不太重要到更重要):groupByInstance,preserveOrder,priority,dependsOnGroups,dependsOnMethods
https://github.com/cbeust/testng/blob/master/CHANGES.txt#L75
因此,如果发生冲突,TestNG会在priority
之前尊重preserve-order
。
如果删除优先级,那么TestNG应该尊重preserve-order
并根据套件文件运行测试。