【发布时间】:2018-05-02 00:59:49
【问题描述】:
我正在尝试使用 Java cucumber 使用有序、标记的钩子。例如:
@Before("@quicklink", order = 20)
编译器似乎不喜欢它。不可能有一个有序的,标记的钩子吗?似乎是功能的合理组合。如果有,语法是什么?
thnx
【问题讨论】:
标签: cucumber-jvm cucumber-java
我正在尝试使用 Java cucumber 使用有序、标记的钩子。例如:
@Before("@quicklink", order = 20)
编译器似乎不喜欢它。不可能有一个有序的,标记的钩子吗?似乎是功能的合理组合。如果有,语法是什么?
thnx
【问题讨论】:
标签: cucumber-jvm cucumber-java
我尝试过同样的方法,但方式不同
@Before(value = "@quicklink", order = 20)
但是,如果您有另一个具有相同订单号的钩子方法用于其他测试,这可能会产生奇怪的问题。就像这两种方法都将在这种情况下运行一样。
因此,如果您使用相同的顺序,我建议使用标记表达式,如下所示:
对于其他方法使用
@Before(value = "~@quicklink", order = 20)
这将确保这个场景永远不会在其他方法上运行
仅在这种情况下,
@Before(value = "@quicklink", order = 20)
这将确保上述方法永远不会为那些运行。
如果您在项目中使用 2x 版本的标记表达式,您可以将 '~' 替换为 'not'
如果您只想在特定场景中替换钩子类中的方法,这可能会派上用场。
【讨论】:
@Before(value = "@quicklink", order = 20)
【讨论】:
您应该能够像这样指定挂钩的顺序:
注解方法风格(如果你使用的是cucumber-java):
@Before(order = 10)
public void doSomething(){
// Do something before each scenario
}
Lambda 样式(如果您使用的是 cucumber-java8):
Before(10, () -> {
// Do something before each scenario
});
【讨论】: