TestNG и JUnit предоставляют набор мощных аннотаций для управления жизненным циклом тестов. Вот основные инструкции с примерами и объяснениями:
@Test
public void testMethod() {
// Основная аннотация для тестового метода
}
@BeforeSuite / @AfterSuite
public void suiteSetup() {
// Выполняется до/после всего набора тестов
}
@Test(dependsOnMethods = {"loginTest"})
public void dashboardTest() {
// Запустится только после успешного loginTest
}
@org.junit.jupiter.api.Test
void standardTest() {
// Аналог @Test в TestNG
}
@ParameterizedTest
@ValueSource(strings = {"test1", "test2"})
void paramTest(String param) {
// Запустится для каждого параметра
}
@BeforeAll / @AfterAll // JUnit
@BeforeClass / @AfterClass // TestNG
static void classSetup() {
// Выполняется один раз для класса
}
@BeforeEach / @AfterEach // JUnit
@BeforeMethod / @AfterMethod // TestNG
void methodSetup() {
// Выполняется перед/после каждого теста
}
@Disabled // JUnit
@Test(enabled = false) // TestNG
void skippedTest() {
// Тест будет пропущен
}
@Test(timeout = 5000) // TestNG
@Timeout(5) // JUnit (в секундах)
void timeoutTest() {
// Тест завершится ошибкой если превысит лимит
}
@Test(groups = {"smoke", "regression"})
public void groupTest() {
// Тест принадлежит к группам smoke и regression
}
@RepeatedTest(3)
void repeatedTest() {
// Тест выполнится 3 раза
}
Функция | TestNG | JUnit 5 |
---|---|---|
Базовый тест | @Test | @Test |
Группы тестов | @Test(groups) | @Tag |
Повторение теста | @Test(invocationCount) | @RepeatedTest |
Исключения | @Test(expectedExceptions) | @Test(expected) |
TestNG и JUnit предлагают богатый набор аннотаций для управления выполнением тестов. TestNG более гибкий для сложных сценариев, в то время как JUnit 5 (Jupiter) предоставляет более современный и модульный подход. Выбор зависит от требований проекта и экосистемы.