Приоритет TestNG 6.10+ важнее порядка сохранения - PullRequest
0 голосов
/ 30 апреля 2018

Я просто работаю с устаревшим кодом, используя TestNG фреймворк в версии 6.9.x , которую я должен обновить до более новой версии фреймворка - как минимум 6.11 . Проблема в том, что многие @Test аннотации помечены дополнительными атрибутами приоритетов (@Test(priority = x)). Но у меня возникла проблема после внесения изменений в TestNG в выпуске 6.10 , а именно:

Новое: иерархия по функциям заказа (от менее важного к большему важно): groupByInstance, preserveOrder, приоритет, зависит от групп, 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-order полностью игнорируется priorities.

Я видел обсуждение относительно этой preserve-order / priority корреляции, и теперь я не совсем уверен, как решить эту проблему.

Основной вопрос:

Есть ли в TestNG какой-либо механизм, позволяющий выполнять тесты в соответствии с приоритетами, определенными в @Test, но сгруппированными по классу (а порядок классов определяется в наборе XML) - так же, как это было раньше TestNG 6.10 Каков наиболее правильный способ переноса устаревших тестов, основанный на приоритетах и ​​сохранении порядка, на новый TestNG ?? Замена логики «приоритета» на depenOnGroups может потребовать много времени для более 1000 методов тестирования: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...