@After和@Before注释未执行第二种方法

时间:2019-07-29 13:11:38

标签: java cucumber junit4

我在@after注释中声明了2个方法,但是它将仅执行第一个方法,不允许我执行第二个方法。请看下面的代码

我想为退出浏览器每次执行一种方法。 我想对失败的测试用例执行第二种方法。

在此处输入代码

@Before
public void databaseLoading(Scenario scenario) {
    //System.out.println("Test Environment Set Up");
    System.out.println("\n------------------------------------------------     TEST ENVIRONMENT SET UP      ------------------------------------------------------------------------------\n");
    System.out.println("Executing Scenario :-> " + scenario.getName());
}

@After
public void browserTearDown()
{
    System.out.println("End the browser");
    driver.close();
 }

public void Screenshot(Scenario scenario) {
    // take the screenshot at the end of every test
    String location = ".\\target\\TakeScreenshot";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh-mm-ss", Locale.ENGLISH);
    Date date = new Date();
    File scrFile =
            ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    // now save the screenshto to a file some place
    if (scenario.isFailed()) {
        try {
            FileUtils.copyFile(scrFile, new File(location + "\\" + dateFormat.format(date) + ".png"));
            System.out.println("Screenshot saved");
        } catch (IOException e) {
            System.out.println("Error in taking Screenshot --> " + e);
        }
    }
}

从不使用方法'Screenshot(cucumber.api.Scenario)'。此错误消息来自第二种方法。

1 个答案:

答案 0 :(得分:2)

您仅标记了browserTearDown()方法。

也将@After标记添加到Screenshot()方法中:

@After
public void browserTearDown()
{
    System.out.println("End the browser");
    driver.close();
}

@After
public void Screenshot(Scenario scenario) {
   ...

}