gpt4 book ai didi

java - TestNG 中的 RunListener 等价物

转载 作者:行者123 更新时间:2023-11-28 21:19:01 25 4
gpt4 key购买 nike

我正在将我的 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 instaed of Cucumber.class


最佳答案

根据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 监听器。

关于java - TestNG 中的 RunListener 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com