Jbehave的自定义故事记者

时间:2014-12-09 01:39:25

标签: java selenium jbehave

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

Additional logging JBehave

JBehave results displayed on a webpage

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您需要刷新一些关于java接口,抽象clasess和继承的基础知识 研究这些链接: 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);
     }
}