Я просто работаю с устаревшим кодом, используя 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 методов тестирования: /