我正在关注以下帖子,在我的 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);
}
}