所以我有一个非常基本的项目,使用Java中的Appium / Cucumber / Gherkin和JUnit。我原本想在每个StepDefinition类中使用@Before和@After标记来创建驱动程序并退出驱动程序并提交报告。我遇到的问题是,即使步骤定义类中没有任何步骤存在,仍会创建类本身,这会导致我的@Before和@After标记运行。
我有一个初始化的解决方法,基本上将我的驱动程序创建移动到后台步骤。但我还没有找到一种方法来正确使用我的驱动程序退出并报告功能。我非常确定如果我将功能强加到我的每个场景中的最后一步,我可以为我的后续案例做同样的事情,但我希望更全面的方法更清晰。
这是否按预期工作?或者,当实际使用其中一个函数时,是否只应实例化Step Definition类?你之前遇到过这种情况吗?
答案 0 :(得分:2)
黄瓜钩子本质上是全球性的。也就是说,如果钩子方法在给予CucumberOption
的 glue 选项的包结构中定义的任何类中编码,则它们将被执行。
出路是在Before和After钩子中使用标签作为过滤器。此外,您还可以确定这些标签的执行顺序。
如果您希望方案在Before
挂钩中打开浏览器,请为方案指定@Browser
标记。在@Before注释中使用它像@Before("@Browser")
。这仅适用于使用Browser标记的方案。同样适用于After
hook。
您可以将订单属性添加到Before and After
标记以优先。 @Before(value="@Browser", order=5)
。这将在Before钩子方法之前运行,其顺序为10.对于After钩子顺序10将在5之前运行。