Хотите повторно запустить классы с неудачными методами после того, как пакет будет полностью выполнен с использованием TestNG

Может ли кто-нибудь помочь мне найти способ, чтобы я мог выполнить все тестовые классы, имеющие сбои, вместе в конце после выполнения пакета один раз.

как будто у меня есть

<test name="Transaction Module" preserve-order="true" >
    <classes>
        <class name="com.uniteller.tests.ABC" />
        <class name="com.uniteller.tests.XYZ" />
    </classes>
</test>
<test name="Beneficiary Module" preserve-order="true" >
    <classes>
        <class name="com.uniteller.tests.PQR" />
        <class name="com.uniteller.tests.LMN" />
   </classes>
</test>

And There are failures in class ABC and LMN, so I want to execute these two classes again after the suite is executed once.


person SNagar    schedule 08.08.2018    source источник


Ответы (1)


Если вы хотите выполнить все неудачные тесты после набора, используйте 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 повторить тестовый пример еще раз, пытаясь увидеть, проходит ли тест, который только что провалился. Вот как вы используете анализатор повторных попыток:

  1. Собрать реализацию интерфейса org.testng.IRetryAnalyzer
  2. Привяжите эту реализацию к аннотации @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();
  }
}
person RocketRaccoon    schedule 13.08.2018