我需要将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
我怎样才能实现它?
答案 0 :(得分:1)
我假设您使用JUnitStory
。
我认为你唯一要做的就是在类路径上放置两个目录:test/config
和test/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
中),那么您必须将相应的故事放入{{1 (com/foo/Bar.story
)。这类似于将资源文件和java文件分离到单独的文件夹中。
答案 1 :(得分: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功能。