TestNG Повторный запуск неудачных тестов: методы и примеры кода

TestNG — это популярная среда тестирования для Java, предоставляющая различные функции для повышения автоматизации тестовых случаев. Одной из таких функций является возможность автоматического повторного запуска неудачных тестов. Повторный запуск неудачных тестов может быть полезен для обеспечения стабильности и надежности результатов тестов. В этой статье мы рассмотрим несколько методов с примерами кода для повторного запуска неудачных тестов с помощью TestNG.

Метод 1: использование встроенного в TestNG retryAnalyzer
TestNG предоставляет встроенный механизм под названием retryAnalyzer, который позволяет вам указать собственный класс для обработки повторных попыток теста. Вот пример:

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class RetryAnalyzer implements IRetryAnalyzer {
    private int maxRetries = 3;
    private int retryCount = 0;
    public boolean retry(ITestResult result) {
        if (retryCount < maxRetries) {
            retryCount++;
            return true;
        }
        return false;
    }
}

Чтобы использовать retryAnalyzer, добавьте к своему тестовому методу аннотацию @Testи укажите класс retryAnalyzer:

import org.testng.annotations.Test;
@Test(retryAnalyzer = RetryAnalyzer.class)
public void myTest() {
    // Test logic here
}

Метод 2: использование прослушивателей TestNG
TestNG предоставляет прослушиватели, которые позволяют перехватывать и изменять поведение теста. Вы можете создать собственный прослушиватель для повторного запуска неудачных тестов. Вот пример:

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
public class RetryListener extends TestListenerAdapter {
    private int maxRetries = 3;
    private int retryCount = 0;
    public void onTestFailure(ITestResult result) {
        if (retryCount < maxRetries) {
            retryCount++;
            result.setStatus(ITestResult.SKIP);
        } else {
            result.setStatus(ITestResult.FAILURE);
        }
    }
}

Чтобы использовать пользовательский прослушиватель, укажите его в XML-файле TestNG:

<listeners>
    <listener class-name="com.example.RetryListener" />
</listeners>

Метод 3: использование поставщиков данных TestNG
Поставщики данных TestNG позволяют динамически предоставлять тестовые данные. Вы можете использовать эту функцию для повторного запуска неудачных тестов, предоставив неудачные тестовые примеры в качестве данных. Вот пример:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class MyTests {
    @Test(dataProvider = "failedTestCases")
    public void rerunFailedTests(String testCase) {
        // Test logic here
    }

    @DataProvider(name = "failedTestCases")
    public Object[][] failedTestCases() {
        // Retrieve failed test cases dynamically
        return new Object[][] {
            {"testCase1"},
            {"testCase2"},
            // Add more failed test cases here
        };
    }
}

Повторный запуск неудачных тестов — важный метод автоматизации тестирования, позволяющий повысить надежность и стабильность результатов тестирования. TestNG предоставляет различные методы повторного запуска неудачных тестов, например использование встроенного retryAnalyzer, пользовательских прослушивателей и поставщиков данных. Внедрив эти методы, вы сможете повысить эффективность своих наборов тестов и обеспечить более точные результаты тестирования.