我正在尝试创建并运行一个简单的JUnitStory来运行.story文件。
我有这个:
class Scenario1 extends JUnitStory {
@Delegate MySteps steps = new MySteps()
@Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryLoader(new LoadFromRelativeFile(new File('src/test/groovy').toURL()))
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withDefaultFormats()
.withFormats(Format.HTML, Format.CONSOLE, Format.TXT)
);
}
@Override
public List candidateSteps() {
final candidateSteps = new InstanceStepsFactory(configuration(), this).createCandidateSteps()
return candidateSteps;
}
}
有或没有委托(在MySteps的所有注释方法中复制和粘贴),每当我运行JBehave时,我得到以下输出:
somePattern(){
// PENDING
}
就像个别故事没有采取措施一样。
当我创建“Stories”类并使用storyPaths
拉入所有故事文件时,将定义各个步骤。使用调试器,我看到candidateSteps正在被击中,但它没有提供所需的数据。
这可能会发生什么?
答案 0 :(得分:2)
您无需委托步骤。而且你不应该覆盖candidateSteps,而是覆盖stepsFactory。在JBehave的更高版本中,不推荐使用candidateSteps,以使工厂方法的首选项更加突出(http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/ConfigurableEmbedder.html#candidateSteps())
请参阅此博客,我在其中详细介绍了基本JBehave配置的工作原理:
http://blog.codecentric.de/en/2012/06/jbehave-configuration-tutorial/
安德烈亚斯
答案 1 :(得分:1)
这是你的回答伙伴: 格式包已更改。
这是不推荐使用的 import static org.jbehave.core.reporters.StoryReporterBuilder.Format.HTML;
这是新的:) import static org.jbehave.core.reporters.Format.HTML;
花了一段时间才找到答案,但隐藏在jbehave文档
上希望它有所帮助! 干杯!
答案 2 :(得分:0)
您不需要使用@Delegate - 您的JUnitStory不是您的Steps类。你可以尝试通过你有这个步骤吗?
当你传入一个已经为Steps类操作字节码的类时,JBehave可能再也看不到jbehave注释了。
答案 3 :(得分:-5)
JBehave是一种陈旧但不发达的技术。不要使用它。