从Java

时间:2015-10-14 13:45:19

标签: java jbehave

在Java中,我有一个String对象,其中包含我希望由JBehave作为步骤匹配和执行的文本。如何才能做到这一点?可以吗?

我真正想要做的是设置一个包装JBehave步骤来检测另一个任意JBehave步骤。它在调用"内部"之前和之后做了一些事情。步骤

所以我要说我已经有了以下

When I say Hello World

@When("I say $text")
public void iSay(final String text)
{
    System.out.println(text);
}

我希望能够做到以下几点:

When I repeat 4 times I say Hello World

它会打电话:

@When("I repeat $count times $subStepString")
public void repeat(final int repeatCount, final String subStepString)
{
    // prep code here
    for (int i = 0; i < repeatCount; i++)
    {
        howDoIdoThisBitHere(subStepString);
    }
    // post process code here
}

说明doDoIdoThisBitHere(...)的部分应该最终使JBehave与subStepString的值匹配,就好像在上面的情况中遇到的那样。这样我就可以使用这种方法调用其他任意东西。

1 个答案:

答案 0 :(得分:0)

我不确定这是一个好主意,因为步骤类不应该依赖于核心配置(StepMatchers,Runners等),但这个解决方案是你想要的吗?

@When("I repeat $count times $subStepString")
public void repeat(final int repeatCount, final String subStepString)
{
    // prep code here
    for (int i = 0; i < repeatCount; i++)
    {
        StoryParser sp = configuration().storyParser();
        Story s = sp.parseStory(subStepString);
        StoryRunner e = configuredEmbedder().storyRunner();
        e.run(configuration(), configuredEmbedder().candidateSteps(), s);
    }
}