首页 > 解决方案 > 在所有功能场景结束后执行 Cucumber hooks

问题描述

在黄瓜中执行功能后,我尝试执行一个脚本来清理数据库。我以以下方式使用 before 和 after 钩子:

    private static boolean skipActions = false;
    @Before("@initData")
    public void setupData() throws Exception {
     if (!skipActions) {
         initData();
         skipActions = true;
      }
    }

在此之前,我可以避免在每个场景之前使用静态变量调用脚本。但是没有弄清楚如何为 after 钩子做这件事:

  @After("@clearData")
   public void tearDown() throws Exception {
      clearData();
  }

有没有办法捕获最后一个场景是否已执行并仅在满足该条件时触发 clearData() ?有没有更优雅的方法呢?

标签: javacucumber

解决方案


所以在 ruby​​ 中有一个 at_exit 钩子。但这不是黄瓜,它是编程相关的。我会看看你的语言,看看这是否可能。

如果做不到这一点,您可以在运行失败次数期间存储一个类变量。那么如果所有这些都通过了,那么你可以做点什么。

你可以解决它的另一种方法是将你的执行工作包装在像詹金斯这样的东西中,詹金斯有很好的简单的开箱即用的清理方法。

在 Jenkinsfile 的声明性和脚本化管道中,都允许调用cleanWs()groovy 语句,然后擦除整个 jenkins 节点。


推荐阅读