从类路径加载故事(并且故事不被称为.story)

时间:2014-08-15 15:07:36

标签: java jbehave

我有一个多模块maven项目。我的故事文件属于他们自己的模块,因为我们有从它们驱动的单独的gui和api测试,并且创建了一个包含这些的故事 - 故事文件名为*.feature

在另一个模块中,我创建了一个Story类:

  public class NewAnnouncements extends JUnitStory {
    @Override
    public Configuration configuration() {
      return new MostUsefulConfiguration().useStoryLoader(new LoadFromClasspath());
    }

    @Override
    public InjectableStepsFactory stepsFactory() {
        return new InstanceStepsFactory(configuration(), new NewAnnouncements());
    }
  }

但是,可以预见的是,这并没有找到它的故事。怎么可能呢?故事不被称为* .story,它们不在文件系统上(尽管它们在同一个类路径中)。我得到的错误是:

org.jbehave.core.io.StoryResourceNotFound: Story path 'org/.../announcement/new_announcements.story' not found by class loader sun.misc.Launcher$AppClassLoader@63e68a2b

如何让jbehave找到我的故事档案?如何理解他们未被称为*.story

1 个答案:

答案 0 :(得分:0)

尝试使用JUnitStories的JBehave文档中的示例:
http://jbehave.org/reference/stable/configuration.html

public class TraderStories extends JUnitStories {

public TraderStories() {
    // configure as TraderStory except for
    Configuration configuration = new MostUsefulConfiguration()
            .useStoryLoader(new LoadFromURL())
}

@Override
protected List<String> storyPaths() {
    String codeLocation = codeLocationFromClass(this.getClass()).getFile();
    return new StoryFinder().findPaths(codeLocation, asList("**/trader*.story"),
                asList(""), "file:"+codeLocation);
}

并在此示例中替换模式:asList("**/trader*.story")
使用模式:asList("**/*.feature")