Какие инструкции используются в TestNG/JUnit?qa-64

TestNG и JUnit предоставляют набор мощных аннотаций для управления жизненным циклом тестов. Вот основные инструкции с примерами и объяснениями:

1. Основные аннотации TestNG

1.1 Организация тестов

@Test
public void testMethod() {
    // Основная аннотация для тестового метода
}
@BeforeSuite / @AfterSuite
public void suiteSetup() {
    // Выполняется до/после всего набора тестов
}

1.2 Управление зависимостями

@Test(dependsOnMethods = {"loginTest"})
public void dashboardTest() {
    // Запустится только после успешного loginTest
}

2. Основные аннотации JUnit 5

2.1 Базовые аннотации

@org.junit.jupiter.api.Test
void standardTest() {
    // Аналог @Test в TestNG
}

2.2 Параметризованные тесты

@ParameterizedTest
@ValueSource(strings = {"test1", "test2"})
void paramTest(String param) {
    // Запустится для каждого параметра
}

3. Общие аннотации жизненного цикла

3.1 Уровень класса

@BeforeAll / @AfterAll  // JUnit
@BeforeClass / @AfterClass  // TestNG
static void classSetup() {
    // Выполняется один раз для класса
}

3.2 Уровень метода

@BeforeEach / @AfterEach  // JUnit
@BeforeMethod / @AfterMethod  // TestNG
void methodSetup() {
    // Выполняется перед/после каждого теста
}

4. Специальные аннотации

4.1 Условное выполнение

@Disabled  // JUnit
@Test(enabled = false)  // TestNG
void skippedTest() {
    // Тест будет пропущен
}

4.2 Таймауты

@Test(timeout = 5000)  // TestNG
@Timeout(5)  // JUnit (в секундах)
void timeoutTest() {
    // Тест завершится ошибкой если превысит лимит
}

5. Продвинутые аннотации

5.1 TestNG

@Test(groups = {"smoke", "regression"})
public void groupTest() {
    // Тест принадлежит к группам smoke и regression
}

5.2 JUnit 5

@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) предоставляет более современный и модульный подход. Выбор зависит от требований проекта и экосистемы.