一个可以考虑在随后的故事驱动器> 1个JBhave步骤?(Can one Given When

2019-09-02 21:35发布

我创建了一个.story文件给予时则(GWT)。

Contact_List.story场景:探索联系鉴于我有朋友的联系人列表当其中一人是网上当年那个朋友却显示在列表中

我想有测试的两个级别(一堆快捷的服务层测试,和一些UI测试)。 因此,我创建使用完全相同的GWT语言以下几点:

ServiceSteps.java

@Given("I've a contact list of friends")
...

UISteps.java

@Given("I've a contact list of friends")
....

并配置JBehave使用他们两个:RunBDDTests.java

...
@Override
public InjectableStepsFactory stepsFactory() {       
    // varargs, can have more that one steps classes
    return new InstanceStepsFactory(configuration(), new ServiceSteps(), new UISteps());
}
...

但是,在JUnit中运行这个的时候,我每次运行测试时,它的随机哪个步骤类它选择。

如何拥有它运行这两个步骤,每一个时间,这样一个.story文件的驱动器> 1步班?

Answer 1:

这是由配置组织。 在JBehave的说法,配置是告诉JBehave框架如何* .stories与* Steps.java关联的类。 在questioniers例如,这是RunBDDTests.java。 将与一个单一的GWT方案分两步相关联的一个选择是创建两个配置,一个是服务的步骤,一个用于用户界面的步骤:

ServiceConfiguration.java

public class ServiceConfiguration extends JUnitStories
{
 @Override
 public InjectableStepsFactory stepsFactory() {       

    return new InstanceStepsFactory(configuration(), new ServiceSteps()); // <- note steps class
 }

@Override
protected List<String> storyPaths() {

    return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()), "**/Contact_List.story", "");  //<- note story file name
}
}

UIConfiguration.java

public class UIConfiguration extends JUnitStories
{
    @Override
    public InjectableStepsFactory stepsFactory() {              
      return new InstanceStepsFactory(configuration(), new UISteps()); // <- note steps class
    }

@Override
protected List<String> storyPaths() {       
  return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()), "**/Contact_List.story", "");  //<- note story file name
}
}

以上两种配置将运行两个不同的步文件对一个.story。



文章来源: Can one Given When Then story drive > 1 JBhave Steps?
标签: bdd jbehave