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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在每个场景之后执行拆除以释放资源在使用黄瓜的宁静BDD中相关的知识,希望对你有一定的参考价值。

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

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

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

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

步骤定义类有以下方法:

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

@After注释使其成为Reporting Step的候选者。

答案

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

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

@Component
@Scope("cucumber-glue")

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

@Bean(destroyMethod = "quit")

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

以上是关于如何在每个场景之后执行拆除以释放资源在使用黄瓜的宁静BDD中的主要内容,如果未能解决你的问题,请参考以下文章

自动运行黄瓜表

如何清理黄瓜栏中不同功能之间的数据库?

如何拆除 SparkSession 并在一个应用程序中创建一个新的?

黄瓜硒使用 Excel 文件作为数据表

解决切换场景时NGUI图集资源未释放的问题

Creator 自动释放资源总结