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

Cucumber-JUnit, is there a way to control the order in which @before and @after tags run

我有两个@after 标签,@close-browser 和@screenshot.So,现在当我将这两个标签用于功能文件时,它首先执行@close-browser 并且在执行方法后失败@截屏。 有没有一种方法可以让 cucumber 告诉 运行 @screenshot after method first?

屏幕截图应采用 @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();
    }
}

有一个 'order' 参数,您可以将其传递给 @Before@After 以控制执行顺序:

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

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

挂钩前 运行 升序排列(最低序号在前),而挂钩后 运行 降序排列(最高序号在前)。