我正在关注以下帖子,以便在我的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));
我想我错过了一些基本的东西。在这种情况下,任何人都可以帮助我。
答案 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);
}
}