Хорошо, чтобы сохранить порядок, вы можете использовать приоритет:
@Test (priority=1)
public void m1(){
}
@Test (priority=2)
public void m2(){
}
@Test (priority=3)
public void m3(){
}
Обратите внимание, что вам не нужно устанавливать приоритет для остальных методов (4-6), так как вы хотите запускать их параллельно. Вот ваш xml для запуска:
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression" parallel="methods" thread-count="3">
<test name="smokeTest">
<classes>
<class name="regression.sequentialParallelExecution"/>
</classes>
</test>
</suite>
Вещи, на которые стоит обратить внимание для приведенного выше XML:
- Вы выбираете выполнение параллельных методов (вы также можете выбрать тесты или экземпляры)
- Количество потоков равно 3, так как вы хотите, чтобы 3 метода выполнялись параллельно.
- Первые 3 метода будут запускаться один за другим последовательно (даже в параллельном режиме они сохранят порядок приоритетов).
ПС. если вы хотите, чтобы метод 2 не выполнялся в случае сбоя метода 1, вы можете использовать следующие методы зависимости от:
@Test (priority=1)
public void m1(){
}
@Test (priority=2, dependsOnMethods="m1")
public void m2(){
}
Удачи!
Примечание для Джулиана, редактировавшего мой пост. Прежде всего, большое спасибо, я не знал, что приоритет имеет dependOnMethods. Должен признаться, я немного сбит с толку. Я успешно использую приоритеты и dependOnMethods вместе, получая желаемые результаты. Чтобы дважды проверить свои выводы, я нашел этот пост и зависит от методов. Я буквально скопировал и вставил код, опубликованный OP, и сразу же получил 'ожидаемый результат' без каких-либо изменений. Я был бы рад, если бы мог объяснить это подробнее. Здоровья!
13.03.2017
code
@Test(dependsOnMethods={m4}) public void m1() { } @Test(dependsOnMethods={m1}) public void m2() { } @Test(dependsOnMethods={m2}) public void m3() { }code
Где m4(), m5() и m6() работают параллельно. 14.03.2017