首页 > 解决方案 > 即使未使用步骤定义类,钩子执行后的黄瓜步骤定义类?

问题描述

所以我有一个非常基本的项目,在 Java 中使用 Appium/Cucumber/Gherkin 和 JUnit。我最初想在我的每个 StepDefinition 类中使用 @Before 和 @After 标签来创建驱动程序并退出驱动程序并提交报告。我遇到的问题是,即使步骤定义类中不存在我的步骤,仍然会创建类本身,这会导致我的 @Before 和 @After 标记运行。

我有一个初始化的解决方法,基本上将我的驱动程序创建移动到后台步骤。但是我还没有找到正确使用驱动程序退出和报告功能的方法。如果我在每个场景中将功能强制到最后一步,我很确定我可以为我的后续案例做同样的事情,但我希望有一种更清洁、更全球化的方法。

这是否按预期工作?还是应该仅在实际使用其中一个功能时才实例化步骤定义类?你以前遇到过这种情况吗?

标签: javacucumberappiumgherkin

解决方案


黄瓜中的钩子本质上是全球性的。也就是说,如果钩子方法被编码在包结构中定义的任何类中它们CucumberOption将被执行。

出路是在 Before 和 After 挂钩中使用标签作为过滤器。您还可以修复这些标签的执行顺序。

如果你想让一个场景在Before钩子中打开浏览器,给这个场景一个@Browser标签。并在 @Before 注释中使用它,如@Before("@Browser"). 这只适用于带有 Browser 标签的场景。After钩子也是如此。

您可以将 order 属性添加到Before and After标签以提供优先级。@Before(value="@Browser", order=5). 这将在顺序为 10 的 Before 钩子方法之前运行。对于 10 的 After 钩子顺序将在 5 之前运行。


推荐阅读