Всем привет. Недавно мы рассмотрели возможность перезапуска упавших (failed) тестов c использованием TestNG. В том примере количество запущенных тестов изменялось на основе переменной maxRetryCountvalue. Чтобы избежать добавления числа попыток к общему количеству тестов, нужно добавить следующий класс к проекту и перегрузить метод onFinish при реализации интерфейса ITestListener:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package com.pack.test; import java.util.Set; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestNGMethod; import org.testng.ITestResult; public class TestListener implements ITestListener { @Override public void onFinish(ITestContext context) { Set<ITestResult> failedTests = context.getFailedTests().getAllResults(); for (ITestResult temp : failedTests) { ITestNGMethod method = temp.getMethod(); if (context.getFailedTests().getResults(method).size() > 1) { failedTests.remove(temp); } else { if (context.getPassedTests().getResults(method).size() > 0) { failedTests.remove(temp); } } } } public void onTestStart(ITestResult result) { } public void onTestSuccess(ITestResult result) { } public void onTestFailure(ITestResult result) { } public void onTestSkipped(ITestResult result) { } public void onTestFailedButWithinSuccessPercentage(ITestResult result) { } public void onStart(ITestContext context) { } } |
Также понадобится добавить “лисенер” в файл testng.xml.
1 2 3 |
<listeners> <listener class-name="com.pack.test.TestListener"/> </listeners> |
После этих изменений результат выполнения тестов будет следующим:
Как видим, все довольно просто…