0

我正在将 Serenity 与 BDD 一起使用,并且需要执行一个拆卸步骤,该步骤必须在每个场景完成后执行。此外,这个拆卸步骤不应该被报告,因为它是技术问题,与作为黄瓜的一部分暴露的行为无关,例如释放一些昂贵的资源

我使用了黄瓜的@After注释,它按预期工作,但问题是现在这一步也显示在我的报告中,我不想被看到。

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

我目前的解决方案不能满足我的需要:

步骤定义类有以下方法:

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

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

4

1 回答 1

0

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

例如,如果您使用的是 Spring: 如果“成本高昂的资源”是您自己创建的类,则将其标记为:

@Component
@Scope("cucumber-glue")

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

@Bean(destroyMethod = "quit")

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

于 2018-03-03T05:47:59.767 回答