我正在使用Serenity和BDD,并且需要执行必须在每个场景完成后执行的拆卸步骤。此外,这个拆解步骤不应该是可见的报告,因为它是技术性的事情,与作为黄瓜的一部分暴露的行为没有任何关系,例如释放一些昂贵的资源得到
我使用了黄瓜的@After
注释,它正如预期的那样工作,但问题是现在这个步骤也显示在我的报告中,我不希望看到它。
有人可以建议我一个解决方案,允许我执行每个方案执行的拆卸步骤,但不应该作为我的Serenity报告中的步骤添加。
我目前的解决方案是不满足我的需求:
步骤定义类有以下方法:
@After
public void tearDown() {
systemAction.deleteCostlyResource(id);
}
但@After
注释使其成为报告步骤的候选者。
答案 0 :(得分:0)
如果您正在使用依赖注入,您可以让DI框架在方案结束时拆除资源吗?
例如,如果您使用的是Spring: 如果“昂贵的资源”是您自己创建的类,请使用以下标记:
@Component
@Scope("cucumber-glue")
如果“昂贵的资源”不是您创建的类,而是由框架或其他类提供的,您可以在spring(test)配置中将其注册为bean,并使用“destroy方法”对其进行标记。 例如,要使用基于注释的配置注册Selenium WebDriver并确保在每个场景后退出,请将其标记为:
@Bean(destroyMethod = "quit")
在这个例子中,quit()是WebDriver的quit()方法。在您的情况下,请调用“昂贵的资源”退出方法或其等效方法。