TestNG сообщает о повторных методах как отдельные тестовые прогоны - PullRequest
0 голосов
/ 16 мая 2018

Я начал работать с TESTNG впервые несколько дней назад.

Я реализовал анализатор повторных попыток, используя интерфейс IRetryAnalyzer, который повторяет неудачный метод тестирования не более 3 раз.

У меня есть метод теста с именем retryInvoker (), который дважды завершается с ошибкой и в третий раз завершается успешно.

Способ, которым TestNG сообщает об этом, состоит из 3 отдельных тестовых прогонов, 2 из которых не пройдены и 1 выполнены успешно, что на самом деле правильно.Хотя я просто хочу записать его как один тестовый прогон, который в конечном итоге завершился успешно (если это произошло до того, как закончилось максимально допустимое количество повторных попыток, которых в данном случае было 3).Или даже если это не удалось после 3 повторных попыток, я хочу сообщить об этом как об одном тестовом прогоне, который завершился неудачей, вместо 4 отдельных тестовых прогонов, все из которых были неудачными.

Есть ли какие-либо выводы по этому поводу?

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете попробовать подход, предложенный в этом SO ответе , удалив дубликаты из контекста теста, если тот же метод найден либо в неудачных, либо в пройденных тестах:

@Overrride
public void onFinish(ITestContext context) {
    Iterator<ITestResult> failedTestCases = context.getFailedTests().getAllResults().iterator();
    while (failedTestCases.hasNext()) {
        System.out.println("failedTestCases");
        ITestResult failedTestCase = failedTestCases.next();
        ITestNGMethod method = failedTestCase.getMethod();
        if (context.getFailedTests().getResults(method).size() > 1) {
            System.out.println("failed test case remove as dup:" + failedTestCase.getTestClass().toString());
            failedTestCases.remove();
        } else {
            if (context.getPassedTests().getResults(method).size() > 0) {
                System.out.println(
                        "failed test case remove as pass retry:" + failedTestCase.getTestClass().toString());
                failedTestCases.remove();
            }
        }
    }
}
...