Я пытался запустить тестовые примеры в определенном порядке, но без везения. Как я вижу методы аннотированные с @AfterClass
проездов после методов из другого теста:Почему @AfterClass вызывается после тестов из других классов?
Configuring TestNG with: [email protected]e9d6
RUN class com.example.testng.ITCaseOne.beforeClass()
RUN class com.example.testng.ITCaseOne.someCase()
RUN class com.example.testng.ITCaseTwo.beforeClass()
RUN class com.example.testng.ITCaseTwo.someCase()
RUN class com.example.testng.ITCaseOne.anotherCase()
RUN class com.example.testng.ITCaseOne.afterClass()
RUN class com.example.testng.ITCaseTwo.anotherCase()
RUN class com.example.testng.ITCaseTwo.afterClass()
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.25 sec
И это не потому, что все @Test
из ITCaseTwo
должны вызываться только после того, как ITCaseOne.afterClass()
(потому что я использую Селен и тесты от одного случая следует проверить соответствующую страницу) ,
Мои простые классы:
public class ITCaseOne {
@BeforeClass
public void beforeClass() {
System.out.printf("RUN %s.beforeClass()\n", getClass());
}
@AfterClass(alwaysRun = true)
public void afterClass() {
System.out.printf("RUN %s.afterClass()\n", getClass());
}
@Test(groups = "std-one")
public void someCase() {
System.out.printf("RUN %s.someCase()\n", getClass());
}
@Test(groups = "logic-one", dependsOnGroups = "std-one")
public void anotherCase() {
System.out.printf("RUN %s.anotherCase()\n", getClass());
}
}
и
public class ITCaseTwo {
@BeforeClass
public void beforeClass() {
System.out.printf("RUN %s.beforeClass()\n", getClass());
}
@AfterClass(alwaysRun = true)
public void afterClass() {
System.out.printf("RUN %s.afterClass()\n", getClass());
}
@Test(groups = "std-two")
public void someCase() {
System.out.printf("RUN %s.someCase()\n", getClass());
}
@Test(groups = "logic-two", dependsOnGroups = "std-two")
public void anotherCase() {
System.out.printf("RUN %s.anotherCase()\n", getClass());
}
}
Если это важно я использую maven-failsafe-plugin
2.12 и testng
6,4
(кстати, я тоже пытаюсь использовать люкс файл с preserve-order="true"
, но это не работает для меня.)
Спасибо заранее!
К сожалению. Я только что исправил опечатку в своем вопросе, чтобы уточнить, что я ожидаю. Мне нужно выполнить все методы из второго класса только после всех методов из первого класса. –
Ответ по-прежнему сохраняется. –
Да, это работает, спасибо. Но это имеет некоторые недостатки: все классы должны быть привязаны таким образом, и когда один из тестов в первом тестовом случае завершится неудачей, все остальные будут пропущены. Кроме того, это решение добавляет строгий порядок выполнения тестов, но на самом деле мне все равно, кто будет называться первым - «ITCaseOne» или «ITCaseTwo». –