繁体   English   中英

在TestNG中相当于RunListener

[英]RunListener equivalent in TestNG

我正在将我的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使用Cucumber.class的此类@Runwith instaed


根据TestNG文档 您可以使用IInvokedMethodListenerITestListener那些侦听器可以帮助您实现目标。

例如,使用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侦听器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM