我正在尝试创建并运行一个简单的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;
    }
}

有或没有委托(delegate)(在MySteps的所有带注释的方法中复制和粘贴),每当我运行JBehave时,我都会得到以下输出:
somePattern(){
  // PENDING
}

就像每个故事都没有跟上步伐。

当我创建一个“Stories”类并使用storyPaths提取所有故事文件时,将定义各个步骤。使用调试器,我发现候选步骤已被命中,但是并没有获取所需的数据。

这可能是怎么回事?

最佳答案

您无需委托(delegate)给步骤。而且,您不应该覆盖候选人步骤,而应该覆盖stepsFactory。在更高版本的JBehave中,不建议使用候选人步骤,以使工厂方法的首选项更加突出(http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/ConfigurableEmbedder.html#candidateSteps())

请参阅此博客,我在其中详细解释了基本JBehave配置的工作方式:

http://blog.codecentric.de/en/2012/06/jbehave-configuration-tutorial/

安德烈亚斯(Andreas)

关于groovy - JBehave-所有步骤都标记为待处理吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8826573/

10-11 17:16