Cucumber-JUnit,有没有办法控制@before和@after标签的运行顺序



我有两个@after标签,@close浏览器和@screenshot。因此,现在当我对功能文件使用两个标签时,它首先@close浏览器执行,并且在@screenshot方法之后执行失败。有没有办法告诉我黄瓜先跑@screenshot方法?

有一个"order"参数,你可以传递给@Before@After来控制执行顺序:

@Before( order = 5 )
public void foo() {}
@After( order = 500 )
public void bar() {}
钩子之前按升序运行(

最低顺序号在前),而钩子之后按降序运行(最高顺序号在前)。

屏幕截图

应使用@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();
    }
}

最新更新