У меня тестовый пример, основанный исключительно на данных. Моя цель - повторить тесты, которые провалились хотя бы еще раз. Проблема, с которой я здесь сталкиваюсь, заключается в том, что если счетчик повторных попыток установлен на 3, и у меня есть тест на основе данных следующим образом,
@Test(dataProvider="PositiveScenarios",groups= "smoke",retryAnalyzer = utils.Retry.class)
public void positiveScenariosTest(LinkedHashMap<String, String> data) throws InterruptedException {
}
And the Retry class is like below
package utils;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class Retry implements IRetryAnalyzer{
int counter = 1;
int retryMaxLimit = 3;
public boolean retry(ITestResult result) {
if (counter < retryMaxLimit) {
System.out.println("Going to retry test case: " + result.getMethod() + ", " + (retryMaxLimit - counter + 1) + " out of " + retryMaxLimit);
counter++;
return true;
}
return false;
}
}
Допустим, у меня есть 10 тестов. Если 4-й тест не пройден, 4-й тест повторяется 3 раза (что хорошо). После этого, скажем, если 6-й тест не пройден, 6-й тест выполняется только один раз, а не 3 раза. Я ожидал, что 6-й тест будет запущен 3 раза, прежде чем потерпеть неудачу.
Не уверен, что я здесь не так делаю.
У меня нет никаких специфических c слушателей TestNG здесь (как при сбое теста) Нужно ли иметь его? Если это так, то как первый тестовый провал прошел 3 раза? Есть ли инициализатор, который мне не хватает.
Любая помощь с благодарностью. Я использую последнюю версию TestNG.