【问题标题】:Cucumber Ordered Tagged Hooks黄瓜有序标签挂钩
【发布时间】:2018-05-02 00:59:49
【问题描述】:

我正在尝试使用 Java cucumber 使用有序、标记的钩子。例如:

@Before("@quicklink", order = 20)

编译器似乎不喜欢它。不可能有一个有序的,标记的钩子吗?似乎是功能的合理组合。如果有,语法是什么?

thnx

【问题讨论】:

    标签: cucumber-jvm cucumber-java


    【解决方案1】:

    我尝试过同样的方法,但方式不同

    @Before(value = "@quicklink", order = 20)

    但是,如果您有另一个具有相同订单号的钩子方法用于其他测试,这可能会产生奇怪的问题。就像这两种方法都将在这种情况下运行一样。

    因此,如果您使用相同的顺序,我建议使用标记表达式,如下所示:

    对于其他方法使用
    @Before(value = "~@quicklink", order = 20) 这将确保这个场景永远不会在其他方法上运行

    仅在这种情况下,

    @Before(value = "@quicklink", order = 20)

    这将确保上述方法永远不会为那些运行。

    如果您在项目中使用 2x 版本的标记表达式,您可以将 '~' 替换为 'not'

    如果您只想在特定场景中替换钩子类中的方法,这可能会派上用场。

    【讨论】:

      【解决方案2】:

      @Before(value = "@quicklink", order = 20)

      【讨论】:

      • @WalterKelt 我认为这是一个单独的问题/问题。这是您问题的答案(“有序、标记的钩子的语法是什么?”)。如果它不适用于您的特定情况,您应该提出一个单独的问题。也许你正在做这样的事情:stackoverflow.com/questions/29420474/… ?
      【解决方案3】:

      您应该能够像这样指定挂钩的顺序:

      注解方法风格(如果你使用的是cucumber-java):

      @Before(order = 10)
      public void doSomething(){
          // Do something before each scenario
      }
      

      Lambda 样式(如果您使用的是 cucumber-java8):

      Before(10, () -> {
          // Do something before each scenario
      });
      

      【讨论】:

      • 没有解决在同一注释中同时使用订单和标签的愿望。自己订购和标记非常简单。我如何结合它们的用法?
      • 你说得对,我没有正确阅读问题。 Tbh,我没有使用有序的、标记的钩子,虽然这听起来像是一个合理的组合,但我想知道它在实践中会如何发挥作用(标签是在顺序之前,还是相反?等等)。到目前为止,您尝试了什么以及遇到了哪些错误? (我的下一步是尝试从代码中找出答案和/或在 Cucumber Slack #help-cucumber-jvm 频道中询问)
      • 在实践中,我预计会出现以下行为。当“订单”被击中时,根据标签做出执行决定。到目前为止,我已尝试在我的 cuke 代码中实现,但 intellij(带有 cuke 插件)抱怨因此无法编译。今天看cuke源码看看是否支持。我预计会失望:-)。
      • Tbh,我也是。但祝你好运!如果你真的需要它,也许这是你可以实现的?
      • 似乎提供了某种程度的支持,但似乎存在功能差异,具体取决于是否使用场景大纲。例如,编译器可以使用:@Before(value ="@hbtest",order = 2)。但是当我使用场景大纲示例标签运行它时,该标签会被“挂钩逻辑之前”忽略。该方法永远不会运行。哦,好吧..
      猜你喜欢
      • 2018-09-23
      • 1970-01-01
      • 2021-06-09
      • 2017-04-17
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多