【问题标题】:serenity-bdd with cucumber feature hooks带有黄瓜功能钩子的 serenity-bdd
【发布时间】:2017-05-23 13:45:02
【问题描述】:

我将 Serenity-BDD 与黄瓜一起使用,我希望每个功能文件只运行一次某些东西。看起来黄瓜目前不支持这一点。我想知道 Serenity 是否有一些解决方法。

我也尝试在测试套件类中使用 JUnit @BeforeClass、@AfterClass 挂钩,但 2 个注释需要静态方法,当时我无法访问 serenity 页面对象方法(当时没有注入实例时间点)。

【问题讨论】:

    标签: selenium-webdriver cucumber-jvm serenity-bdd cucumber-serenity


    【解决方案1】:

    您可以尝试设置一个静态全局标志,以确保 before 方法只运行一次。

    使用标签设置功能文件。

    @RunOnce
    Feature: Run Once
    

    在您的步骤定义中使用以下钩子。

        private static boolean onceFlag = true;
    
        @Before(value="@RunOnce")
        public void beforeOnce(){
    
            if(onceFlag) {
                onceFlag = false;
    
                //Your code to write once per feature file
    
            }
        }
    

    【讨论】:

    • 这是否可以在每次测试运行时作为全局钩子前实现一次。表示在所有功能文件之前符文一次
    • @Grasshoper 对不起,我的意思是,它不仅应该在所有其他功能文件之前运行一次。我在上面尝试过,但它并没有在所有其他功能文件之前运行。
    • 你应该看看插件系统。 TestSourceRead 事件可能是你正在寻找的
    • 我试过了,但看起来我的serenity bdd 有某种依赖问题。我跟着这个。 github.com/cucumber/cucumber-jvm/issues/515medium.com/@hemanthsridhar/…,之后由于依赖冲突,我无法运行测试。这是我目前的状态stackoverflow.com/questions/61815030/…
    【解决方案2】:

    您可以尝试实现 net.thucydides.core.steps.StepListener 接口并通过 SPI 连接它。我在this post的回答中描述了这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多