Если вы хотите выполнить все неудачные тесты после набора, используйте testng-failed.xml, см. документацию а>:
5.12 - Повторный запуск неудачных тестов
Каждый раз, когда тесты в пакете терпят неудачу, TestNG создает файл с именем testng-failed.xml в выходном каталоге. Этот XML-файл содержит необходимую информацию для повторного запуска только тех методов, в которых произошел сбой, что позволяет быстро воспроизвести сбои без необходимости выполнять все тесты. Таким образом, типичный сеанс будет выглядеть так:
java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xml
java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs test-outputs\testng-failed.xml
Обратите внимание, что testng-failed.xml будет содержать все необходимые зависимые методы, так что вы гарантированно запустите неудавшиеся методы без ошибок SKIP.
Иногда вы можете захотеть, чтобы TestNG автоматически повторял тест всякий раз, когда он терпит неудачу. В таких ситуациях вы можете использовать анализатор повторных попыток. Когда вы привязываете анализатор повторных попыток к тесту, TestNG автоматически вызывает анализатор повторных попыток, чтобы определить, может ли TestNG повторить тестовый пример еще раз, пытаясь увидеть, проходит ли тест, который только что провалился. Вот как вы используете анализатор повторных попыток:
- Собрать реализацию интерфейса org.testng.IRetryAnalyzer
- Привяжите эту реализацию к аннотации @Test, например, @Test(retryAnalyzer = LocalRetry.class)
Ниже приведен пример реализации анализатора повторных попыток, который повторяет тест не более трех раз.
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class MyRetry implements IRetryAnalyzer {
private int retryCount = 0;
private static final int maxRetryCount = 3;
@Override
public boolean retry(ITestResult result) {
if (retryCount < maxRetryCount) {
retryCount++;
return true;
}
return false;
}
}
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestclassSample {
@Test(retryAnalyzer = MyRetry.class)
public void test2() {
Assert.fail();
}
}