Jbehave中的自定义故事记者



我正在关注以下帖子,在我的 JBehave 中创建自定义报告器。

其他日志记录 JBehave

网页上显示的 JBehave 结果

每当我尝试创建一个类时,我都会收到以下错误。

WebStories.MyStoryReporter is not abstract and does not override abstract method pendingMethods(java.util.List<java.lang.String>) in org.jbehave.core.reporters.StoryReporter

所以现在我已经将课程制作为如下所示abstract

public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter

现在真正的问题是我不能从.withReporters调用MyStoryReporter,因为它是一个抽象类

.useStoryReporterBuilder(new StoryReporterBuilder()
                    .withCodeLocation(codeLocationFromClass(embeddableClass))
                    .withDefaultFormats()
                    .withFormats(ANSI_CONSOLE, HTML, XML, STATS)
                    .withFailureTrace(true)
                    .withReporters(new MyStoryReporter));

我想我错过了一些基本的东西。在这种情况下,任何人都可以帮助我。

您需要刷新有关 java 接口、抽象分支和继承的一些基础知识。
研究这些链接:http://docs.oracle.com/javase/tutorial/java/concepts/interface.html

http://docs.oracle.com/javase/tutorial/java/IandI/https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html


org.jbehave.core.reporters.StoryReporter是一个定义21个抽象方法的interfce: http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/reporters/StoryReporter.html
如果要在某个类中实现此接口,则需要在实现类中为所有这 21 个方法提供一个实现。


如果不想定义所有方法,而只想定义一个(或其中几个(,请扩展 NullStoryReporter 类,而不是实现 StoryReporter 接口。NullStoryReporter 为所有 StoryReporter 方法提供 null(空(实现:http://jbehave.org/reference/latest/javadoc/core/org/jbehave/core/reporters/NullStoryReporter.html

例如,如果您只想在自定义报告器中使用一种successful方法,只需执行以下操作:

public class MyStoryReporter extends org.jbehave.core.reporters.NullStoryReporter{
  @Override
     public void successful(String step) {
        log.info(">>successStep:" + step);
     }
}

最新更新