当使用Serenity和JBehave时,我的步骤定义将通过@Given和@When提供的信息添加到内部状态类中,该状态类在@Then方法中验证。
需要为每个测试重新初始化状态类,即在没有示例的每个场景之前,以及在带有示例的场景的每个示例之前。
我怎样才能做到这一点?
我在http://jbehave.github.io/Old_JBehave_Issues/548/找到了一张请求@BeforeExample(可以解决我的问题)的JIRA票证。但是,使用@BeforeScenario仅在每个场景之前清除,而不是在每个示例之前清除。
每个@Given中的清除状态在情景有多个@Givens(使用Given ... And ....)的情况下不起作用。
答案 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