4

我需要将 mystory.story 文件和 MyStory.java 放在不同的文件夹中。下面是我的配置,

@Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
        // where to find the stories
                .useStoryLoader(new LoadFromClasspath(this.getClass()))
                // CONSOLE and TXT reporting
                .useStoryReporterBuilder(
                        new StoryReporterBuilder().withDefaultFormats()
                                .withFormats(Format.CONSOLE, Format.HTML));
    }

    // Here we specify the steps classes
    @Override
    public List<CandidateSteps> candidateSteps() {
        // varargs, can have more that one steps classes
        return new InstanceStepsFactory(configuration(), new SurveySteps())
                .createCandidateSteps();
    } 

那就是我需要使用文件夹结构作为

 test
  |_config
        |_MyStory.java
  |_stories
        |_my_Story.story

代替,

 test
  |_MyStory.java
  |_my_Story.story

我怎样才能实现它?

4

2 回答 2

1

我假设你使用JUnitStory. 我认为您唯一需要做的就是将两个目录放在类路径中:test/configtest/stories. 默认的故事解析器org.jbehave.core.io.UnderscoredCamelCaseResolver会创建一个类似的故事路径"org.jbehave.core.ICanLogin.java" -> "org/jbehave/core/i_can_login.story",并且将使用 加载,org.jbehave.core.io.LoadFromClasspath因为这是默认的资源加载器。由于src/stories目录在类路径中,资源加载器会找到它。请注意,这要求将类和故事放在同一个“包”中,也就是说,如果类是com.foo.Bar(放置在src/config)中,那么您必须将相应的故事放入com/foo/Bar.story(中src/stories)。这类似于将资源文件和 java 文件分离到单独的文件夹中。

于 2013-08-07T19:37:55.503 回答
1

您可以覆盖默认故事路径解析器,例如:

@Override
public Configuration configuration() {
    return new MostUsefulConfiguration()
        .useStoryPathResolver(new StoryPathResolver() {
        @Override
        public String resolve(Class<? extends Embeddable> embeddableClass) {
            return "_stories/_my_Story.story";
        }
    })
}

(当然最好在课堂之外的某个地方创建并在这里使用它,而不是匿名的)。但请记住,如果这样做,您还需要明确指定故事文件的名称,以某种方式重用将“MyClass”转换为“my_class”的 jbehave 功能或创建自己的策略。

于 2014-11-21T11:30:06.990 回答