jbehave - 如何在场景的每个示例之前执行代码

时间:2018-01-11 10:04:42

标签: bdd jbehave serenity-bdd

当使用Serenity和JBehave时,我的步骤定义将通过@Given和@When提供的信息添加到内部状态类中,该状态类在@Then方法中验证。

需要为每个测试重新初始化状态类,即在没有示例的每个场景之前,以及在带有示例的场景的每个示例之前。

我怎样才能做到这一点?

我在http://jbehave.github.io/Old_JBehave_Issues/548/找到了一张请求@BeforeExample(可以解决我的问题)的JIRA票证。但是,使用@BeforeScenario仅在每个场景之前清除,而不是在每个示例之前清除。

每个@Given中的清除状态在情景有多个@Givens(使用Given ... And ....)的情况下不起作用。

2 个答案:

答案 0 :(得分:0)

@BeforeScenario不起作用(对于带有示例的场景,将被忽略)。

@BeforeScenario(uponType = ScenarioType.ANY)确实有效,我发现在发布此问题之前没有工作,但显然是由其他原因引起的。

无论哪种方式,该方法必须是公开的。

答案 1 :(得分:0)

您可能会尝试使用JBehave'之前'来重置场景状态。寿命周期:

Narrative:
...

Lifecycle: 
Before:
Given a step that is executed before each scenario 

一些额外的生命周期选项:

Lifecycle:
After:
Outcome: ANY    
Given a step that is executed after each scenario regardless of outcome
Outcome: SUCCESS 
Given a step that is executed after each successful scenario
Outcome: FAILURE 
Given a step that is executed after each failed scenario

来源:JBehave Story Syntax