Эквивалент RunListener в TestNG - PullRequest
       6

Эквивалент RunListener в TestNG

0 голосов
/ 30 января 2019

Я конвертирую свой проект Cucumber-JUnit в Cucumber-TestNg.В Junit я использовал RunListener для захвата шагов Gherkin при исполнении.Я использовал этот слушатель, чтобы вернуть меня для сценария, на котором в настоящий момент выполняется шаг, например: на шаге «Заданное» условие или на шаге «Когда» или на шаге «Затем» и так далее.Но в TestNg я не смог найти похожего слушателя, который возвращает мне выполняемые шаги сценария Gherkin.Я пробовал других слушателей TestNg, но я не мог решить эту проблему.Я нахожу, что слушатели TestNg находятся в состоянии тестирования, а не как JuNit RunListener.Предложите, даже если для этого есть альтернативное решение.

/**
 * Class used to do some report regarding the JUnit event notifier
 */
public class CustomJUnitListener extends RunListener {

  SeleniumTest test = null;

  public void setSeleniumTest(SeleniumTest test) {
    this.test = test;
  }

  /** {@inheritDoc} */
  @Override
  public void testFinished(Description description) throws Exception {
            // Get which scenario step under execution at run time..here    
  }

}```

//--------

Сделайте TestRunner для использования этого класса @Runwith of Cucumber.class


1 Ответ

0 голосов
/ 30 апреля 2019

Согласно TestNG doc .Вы можете использовать IInvokedMethodListener или ITestListener, чтобы эти слушатели могли помочь вам достичь вашей цели.

Например, используя IInvokedMethodListener, вы можете реализовать что-то похожее на это:

public class TestNGCustomInvokedMethodListener implements IInvokedMethodListener {

  private static final Logger LOG = LoggerFactory.getLogger(TestNGCustomInvokedMethodListener.class);

  @Override
  public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
   LOG.info("Running method: " + iInvokedMethod.getTestMethod().getMethodName());
  }

  @Override
  public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {

    LOG.info("Finished method: {} with result: {}", iInvokedMethod.getTestMethod().getMethodName(), statusToString(iTestResult.getStatus()));
  }

  private String statusToString(int status) {
    String statusStr;
    switch (status) {
      case ITestResult.FAILURE:
        statusStr = "FAILURE";
        break;

      case ITestResult.SKIP:
        statusStr = "SKIP";
        break;

      case ITestResult.STARTED:
        statusStr = "STARTED";
        break;

      case ITestResult.SUCCESS:
        statusStr = "SUCCESS";
        break;

     default:
        statusStr = "undefined";
        break;
    }

    return statusStr;
  }
}

Наконец, вы можете взглянуть на этот пост , который объясняет оченьхорошо, как использовать конфигурацию прослушивателей TestNG.

...