java - 即使未使用步骤定义类,钩子执行后的黄瓜步骤定义类?
问题描述
所以我有一个非常基本的项目,在 Java 中使用 Appium/Cucumber/Gherkin 和 JUnit。我最初想在我的每个 StepDefinition 类中使用 @Before 和 @After 标签来创建驱动程序并退出驱动程序并提交报告。我遇到的问题是,即使步骤定义类中不存在我的步骤,仍然会创建类本身,这会导致我的 @Before 和 @After 标记运行。
我有一个初始化的解决方法,基本上将我的驱动程序创建移动到后台步骤。但是我还没有找到正确使用驱动程序退出和报告功能的方法。如果我在每个场景中将功能强制到最后一步,我很确定我可以为我的后续案例做同样的事情,但我希望有一种更清洁、更全球化的方法。
这是否按预期工作?还是应该仅在实际使用其中一个功能时才实例化步骤定义类?你以前遇到过这种情况吗?
解决方案
黄瓜中的钩子本质上是全球性的。也就是说,如果钩子方法被编码在包结构中定义的任何类中,它们CucumberOption
将被执行。
出路是在 Before 和 After 挂钩中使用标签作为过滤器。您还可以修复这些标签的执行顺序。
如果你想让一个场景在Before
钩子中打开浏览器,给这个场景一个@Browser
标签。并在 @Before 注释中使用它,如@Before("@Browser")
. 这只适用于带有 Browser 标签的场景。After
钩子也是如此。
您可以将 order 属性添加到Before and After
标签以提供优先级。@Before(value="@Browser", order=5)
. 这将在顺序为 10 的 Before 钩子方法之前运行。对于 10 的 After 钩子顺序将在 5 之前运行。
推荐阅读
- sass - 如何使 YouTube 缩略图图像纵横比为 21:9
- ios - 标签栏控制器中的图像和标题与 iPhone X 重叠?
- android - 屏幕锁定时Android线程执行减慢
- typescript - 在 VSCode 中自动导入 Typescript 子模块而不是父模块
- java - Android应用程序在单击按钮时崩溃
- eclipse - 检查最近的 -SNAPSHOT 父级
- javascript - 在 Quill js 编辑器中模拟文档页面
- java - Spring Boot:PUT 不更新 ManyToOne 字段,但所有其他字段
- kotlin - 协程的类强制转换异常
- pandas - Python pandas:计算所有列的统计范围。