![](/img/trans.png)
[英]Junit RunListener or Description or Result or Failure equivalent in Junit 5
[英]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文档 。 您可以使用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侦听器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.