testng中的方法优先级

时间:2017-07-13 08:46:29

标签: testng

我在基于优先级运行测试方法时面临问题。下面是我的代码片段

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中定义的测试类顺序运行所有测试。尝试以下解决方案,但没有工作:

  1. 通过扩展testng.xml重新优先考虑所有类的测试方法(在IMethodInterceptor中)。

    结果:在这种情况下,执行顺序是,

        i. BeforeSuite Method 
       ii. ABC.verifyABC method
      iii. override intercept method
    
  2. 指定所有测试类的所有测试方法的优先级,但不知何故,这对我来说也不起作用。

  3. 我使用的是testng 6.11版本。在这种情况下,任何人都可以帮助我。

    提前致谢!

1 个答案:

答案 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并根据套件文件运行测试。