【问题标题】:Cucumber-JUnit, is there a way to control the order in which @before and @after tags runCucumber-JUnit,有没有办法控制@before和@after标签的运行顺序
【发布时间】:2016-07-11 14:44:34
【问题描述】:

我有两个@after 标签,@close-browser 和@screenshot。所以,现在当我将这两个标签用于功能文件时,它首先执行@close-browser,它在执行@screenshot 的 after 方法时失败。 有没有办法让黄瓜先在方法之后运行@screenshot?

【问题讨论】:

    标签: java junit cucumber cucumber-jvm cucumber-junit


    【解决方案1】:

    您可以将“顺序”参数传递给@Before@After 以控制执行顺序:

    @Before( order = 5 )
    public void foo() {}
    
    @After( order = 500 )
    public void bar() {}
    

    Before hooks 按升序运行(最低序号在前),而 After hooks 按降序运行(最高序号在前)。

    【讨论】:

    • 我正在检查 isscanrio 失败,如果失败,我正在执行一些代码?如果我正在运行两个功能文件,最后一个场景失败了,下一个功能的第一步也将失败因为黄瓜之前的场景是失败的。你知道如何处理这种情况吗?非常感谢您的帮助。
    • @tosha : 请开始一个新的 Stack Overflow 问题
    • 我确实请检查
    • 去过那里并发表评论
    【解决方案2】:

    应使用@After 注释方法之一截取屏幕截图。像这样:

    @After
    public void finish(Scenario scenario) {
        try {
            byte[] screenshot =
            helper.getWebDriver().getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");
        } catch (WebDriverException somePlatformsDontSupportScreenshots) {
    
        System.err.println(somePlatformsDontSupportScreenshots.getMessage());
        }
        finally {
            helper.getWebDriver().close();
        }
    }
    

    【讨论】:

    • 这种方法的问题是有时我不想关闭浏览器,如果场景失败,原因是我的某些功能在所有场景中都使用相同的浏览器。如果我在方法之后使用此方法,它会关闭浏览器,下一个场景将找不到浏览器会话并将失败。
    • 我不知道在某些功能文件中对所有场景使用相同的浏览器会话是否正确。
    • @tosha Cucumber 最佳实践强烈建议您将所有场景彼此完全隔离。话虽如此,只要您清除 @After 注释方法之一中的 cookie,您仍然可以重复使用相同的会话
    • Eugene 如果我在一个功能文件中有多个场景,是否最好为每个场景打开和关闭浏览器?原因是每次如果我们必须打开和关闭浏览器都需要时间。因此,例如,如果我有功能文件可以在谷歌中搜索某些内容,例如首先搜索 Facebook、gmail、雅虎,然后验证这三个搜索的结果。然后我会有3个场景。那么,对于这种情况,三遍打开和关闭浏览器是不是比较好呢?或者重复使用相同的浏览器并导航回谷歌并开始搜索其余两个。
    • 正如我所提到的,您确实希望单独运行每个场景,因为这将减少出现错误行为的机会,因为您可以从以前的场景中获得剩余。但是,如果您只是在每次会话后清理 cookie,而不是真正关闭和打开浏览器,则应该不会花费那么多时间。
    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2013-11-02
    • 2018-06-29
    相关资源
    最近更新 更多