Jbehave 在@BeforeStory 中获取故事名称

raf*_*rry 5 jbehave

我想在带有注释的方法中获取故事名称@BeforeStory

我需要这个用于调试目的,因为我正在runStoriesAsPaths使用多个线程运行一堆故事,并且我试图记录哪个线程正在运行哪个故事。

有没有办法做到这一点?

Tid*_*ach 3

首先,您需要创建一个新的 StoryReporter(扩展该类)。在该类中,您可以添加要在故事/场景/步骤之前/之后执行的操作,并且您有故事名称。例子:

public class NewStoryReporter implements StoryReporter {

private StoryReporter delegate;

public NewStoryReporter(StoryReporter delegate) {
    this.delegate = delegate;
}

@Override
public void beforeStory(Story story, boolean givenStory) {
    delegate.beforeStory(story, givenStory);
}

@Override
public void beforeScenario(String scenarioTitle) {
    delegate.beforeScenario(scenarioTitle);
}

@Override
public void beforeStep(String step) {
    if(step.equals("When after each step")){
        return;
    }
    delegate.beforeStep(step);
}
Run Code Online (Sandbox Code Playgroud)

那么你需要扩展 StoryReporterBuilder,这将创建你的 NewStoryReporter。例子:

public class NewStoryReporterBuilder extends StoryReporterBuilder {

@Override
public StoryReporter build(String storyPath) {
    StoryReporter delegate = super.build(storyPath);
    return new NewStoryReporter(delegate);
}

}
Run Code Online (Sandbox Code Playgroud)

然后在您的配置中创建 NewStoryReporterBuilder 的实例,并在中使用它

Configuration configuration = new YourConfiguration().useStoryReporterBuilder(newStoryReporterBuilder....)
Run Code Online (Sandbox Code Playgroud)