TestNG 6.10+优先级比保留顺序更重要

时间:2018-04-30 10:04:17

标签: testing testng

我只是在 6.9.x 版本中使用 TestNG 框架处理一些遗留代码,我必须升级到更新版本的框架 - 至少 6.11 。问题是,许多@Test注释都标有额外的优先级属性(@Test(priority = x))。但是在6.10版本的TestNG中引入更改后,我遇到了一个问题,即:

  

新功能:订单功能的层次结构(从不太重要到更多   重要):groupByInstance,preserveOrder,priority,dependsOnGroups,   dependsOnMethods

让我们看一个两个测试类的示例,每个测试类包含三个具有已定义优先级的测试方法:

头等舱:

public class TestClass1 {

    Logger LOG = Logger.getLogger("logger1");

    @Test(priority = 2)
    public void methodB() {
        LOG.info("Method 1B");
    }

    @Test(priority = 3)
    public void methodA() {
        LOG.info("Method 1A");
    }

    @Test(priority = 1)
    public void methodC() {
        LOG.info("Method 1C");
    }
}

第二个:

public class TestClass2 {

    Logger LOG = Logger.getLogger("logger2");

    @Test(priority = 1)
    public void methodC() {
        LOG.info("Method 2C");
    }

    @Test(priority = 2)
    public void methodB() {
        LOG.info("Method 2B");
    }

    @Test(priority = 3)
    public void methodA() {
        LOG.info("Method 2A");
    }

}

...和XML:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
  <test name="Test" preserve-order="true">
    <classes>
      <class name="com.test.radek.testngtest.TestClass2"/>
      <class name="com.test.radek.testngtest.TestClass1"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

运行这样的XML套件后,不同TestNG版本的测试执行顺序各不相同:

对于6.9.x:

Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass2 **methodC**
Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass2 **methodB**
Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass2 **methodA**
Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass1 **methodC**
Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass1 **methodB**
Apr 30, 2018 11:46:19 AM com.test.radek.testngtest.TestClass1 **methodA**

对于6.10及更高版本:

Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass2 **methodC**
Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass1 **methodC**
Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass2 **methodB**
Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass1 **methodB**
Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass2 **methodA**
Apr 30, 2018 11:47:37 AM com.test.radek.testngtest.TestClass1 **methodA**

因此,在这两个示例中,我们可以看到从TestNG 6.10开始 preserve-orderpriorities完全忽略。

我看到关于此preserve-order / priority关联的discussion,现在我不确定如何处理此问题。

主要问题:

TestNG是否有任何机制允许根据@Test中定义的优先级执行测试但按类分组(并且类顺序在XML套件中定义) - 所以完全如此在TestNG 6.10之前? 将依赖于优先级和保留顺序的旧测试迁移到新的TestNG的最正确方法是什么?使用dependsOnGroups替换“priority”逻辑对于1000多种测试方法来说可能非常耗时:/

0 个答案:

没有答案