如何配置监听器以覆盖 Citrus 中 class LoggingReporter 的行为?

How to configure a Listener to override the behaviour of the class LoggingReporter in Citrus?

我正在寻找一种方法来在使用框架 Citrus.

时删除失败断言的堆栈跟踪

这是在 testNg 中完成的,如下所示:

public class NoStackTraceListener implements ITestListener {
...
@Override
public void onTestFailure(ITestResult iTestResult) {
    Throwable th = iTestResult.getThrowable();
    if (Objects.nonNull(th)) {
        System.out.println(th.getMessage());
        iTestResult.setThrowable(null);
    }
}
...
}

@Listeners({ NoStackTraceListener.class })
class A {...}

但是我找不到任何使用 class 'TestListener' 或其他的例子来覆盖提供的 'LoggingReporter'

的实现

请问有人已经使用 framework citrus 覆盖了 Listener 并且可以提供代码片段吗?

谢谢

您需要将自定义报告程序作为 bean 添加到 Spring 应用程序上下文:

@Bean
public NoStackTraceReporter noStackTraceReporter() {
    return new NoStackTraceReporter();
}

您还可以通过选择 bean 名称来覆盖默认的日志报告程序 loggingReporter

@Bean
public NoStackTraceReporter loggingReporter() {
    return new NoStackTraceReporter();
}

NoStackTraceReporter 实现随后能够覆盖失败测试的特定事件处理程序:

public class NoStackTraceReporter extends LoggingReporter {
...
    @Override
    public void onTestFailure(TestCase test, Throwable cause) {
        // do something customized
    }
...
}

您也可以覆盖报告器界面中的 generateTestResults() 方法以自定义记录结果。

您还可以按照演示如何在 Citrus 中添加自定义报告程序的示例 http://www.citrusframework.org/samples/reporting/ 进行操作。