如何在 jbehave 的场景后获取当前 story/scenario

How to get current story/scenario in after scenario in jbehave

我正在尝试使用 'context' 对象在 afterScenario 中获取当前 运行 story/scenario:

    Context context = new Context();
    String currentScenario = context.getCurrentScenario();
    System.out.println("currentScen:" + currentScenario);

但 currentScenario 是 returning 'null'。这是为什么,我如何 return 当前 运行 story/scenario

非常感谢您的帮助

我认为您在问两个不同的问题。我会尝试分别解决它们。

第一个问题是"Why does creating a context and calling getCurrentScenario() not return the currently running scenario?"。我假设您引用的是 org.jbehave.core.context.Context class。在这种情况下,您创建了一个新的上下文实例,其中没有关于当前 运行 场景的详细信息。所以这个 returns null 是有道理的。某处可能有一个具有此类上下文的 StepMonitor,但您无法从该代码访问它。

第二个是 "How can I access the current scenario from within a AfterScenario method?" 从生命周期方法 (Before/After Scenario/Story/Stories) 内部访问此类数据的常规方法是使用报告器。这基本上是一个监听器,它在故事 运行 时获取事件。然后,您可以跟踪 story/scenario/step 是否在进行中,并将其提供给您的生命周期方法。我不会提供示例,而是会向您指出一个相关问题,该问题已经有涵盖相同用例的示例。

Jbehave get story name inside @BeforeStory