Если кто-нибудь может подсказать буду признательна.
Проблема: Когда я run using xml
последовательность методов
test1
test3
test2
test 4
Исходные данные:
Test1 class (test1 method, test2 method)
Test2 class (test3 method, test4 method)
Нужный результат:
последовательность методов
test1
test2
test3
test4
public class Test1 {
@Test
public void test1(){
System.out.println("test1");
}
@Test (dependsOnMethods="test1")
public void test2(){
System.out.println("test2");
}
@AfterClass
public void cleanUp(){
//close driver
}
}
public class Test2 {
@Test
public void test3(){
System.out.println("test3");
}
@Test (dependsOnMethods="test3")
public void test4(){
System.out.println("test4");
}
@AfterClass
public void cleanUp(){
}
А что собственно тебя не устраивает? Чем плох порядок выполнения 1, 3, 2, 4? Ведь указанные зависимости выполнены.
Гораздо правильнее искать ответ на вопрос"как избавиться от зависимостей в тестах"
Здравствуйте. Вы пытаетесь построить зависимости на методах из разных классов, что в принципе не верно и, соответственно, фреймоврк не даст вам этого сделать. Если вы все же хотите построить такую зависимость, то вам нужно смотреть в сторону группировки тестов, т.е. нужно бы заглянуть в документацию по TestNG п. 5.7.1 - TestNG и п. 5.7.2 - TestNG.
В п. 5.7.1 есть ссылка на статью (Dependent test methods « Otaku – Cedric's blog), в которой описвается структура тестов подобная вашей вот в таком ключе:
@Test(groups = "init")
public class BaseTest {
public correctVM() {}
public serverStartedOk() {}
}
@Test(dependsOnGroups = { "init.*" })
public class TestServer extends BaseTest {
public method1() { ... }
public method2() { ... }
...
}
Насколько такой подход себя оправдывает судить сложно. А вообще, согласен с предпоследним оратором и вы прислушайтесь
Гораздо правильнее искать ответ на вопрос"как избавиться от зависимостей в тестах"
Уточнение к автору: суть проблемы заключалась в межклассовой приоритезации для формирования regression suite с кастомным execution order без привязки к группам, аля спуск от top к low priority tests?
Применительно к вашему случаю, по всей видимости причина такого поведения кроется в alphabetical execution order. Имена методов то не настоящие в приведенном примере, так?
В общем, если используете слушателя, то можно переопределить:
public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {}
Внутри вы можете задать кастомный comparator, при помощи которого можно будет отсортировать пришедший из xml список методов, как вам того захочется. К слову, там же вы сможете и отследить, в какой последовательности приходят методы в оригинале.