TestNG中的RunListener等效项

问题描述 投票:0回答:1

我正在将我的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而不是Cucumber.class


java testing cucumber testng gherkin
1个回答
1
投票

根据TestNG doc。您可以使用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;
  }
}

最后,你可以看看this post,它很好地解释了如何使用配置TestNG Listeners。

© www.soinside.com 2019 - 2024. All rights reserved.