如何在每个场景之后执行拆卸以释放资源在使用黄瓜的宁静BDD中

时间:2018-02-26 18:08:20

标签: cucumber serenity-bdd cucumber-serenity

我正在使用Serenity和BDD,并且需要执行必须在每个场景完成后执行的拆卸步骤。此外,这个拆解步骤不应该是可见的报告,因为它是技术性的事情,与作为黄瓜的一部分暴露的行为没有任何关系,例如释放一些昂贵的资源得到

我使用了黄瓜的@After注释,它正如预期的那样工作,但问题是现在这个步骤也显示在我的报告中,我不希望看到它。

有人可以建议我一个解决方案,允许我执行每个方案执行的拆卸步骤,但不应该作为我的Serenity报告中的步骤添加。

我目前的解决方案是不满足我的需求:

步骤定义类有以下方法:

@After
 public void tearDown() {
     systemAction.deleteCostlyResource(id);
 }

@After注释使其成为报告步骤的候选者。

1 个答案:

答案 0 :(得分:0)

如果您正在使用依赖注入,您可以让DI框架在方案结束时拆除资源吗?

例如,如果您使用的是Spring: 如果“昂贵的资源”是您自己创建的类,请使用以下标记:

@Component
@Scope("cucumber-glue")

如果“昂贵的资源”不是您创建的类,而是由框架或其他类提供的,您可以在spring(test)配置中将其注册为bean,并使用“destroy方法”对其进行标记。 例如,要使用基于注释的配置注册Selenium WebDriver并确保在每个场景后退出,请将其标记为:

@Bean(destroyMethod = "quit")

在这个例子中,quit()是WebDriver的quit()方法。在您的情况下,请调用“昂贵的资源”退出方法或其等效方法。