Аннотации @After и @Before не выполняют второй метод

Я объявил 2 метода @after аннотации, но он будет выполнять только первый метод, он не позволяет мне выполнить второй метод. Пожалуйста, взгляните на приведенный ниже код

Я хочу каждый раз выполнять 1 метод для выхода из браузера. Я хочу выполнить второй метод для неудачных тестов.

@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);
        }
    }
}

Метод «Скриншот (cucumber.api.Scenario)» никогда не используется. Это сообщение об ошибке появляется для второго метода.

где твоя аннотация @before

Rajendra Gupta 29.07.2019 15:15

Все методы, которые вы хотите выполнить до или после теста, должны быть помечены @Before или @After соответственно. Screenshot(Scenario) не помечен, и код из вашего примера никогда его не вызывает. Возможно, вы захотите сделать это @Rule вместо этого в любом случае.

M. Prokhorov 29.07.2019 15:20

Сотрите предложение правила, огурец может не поддерживать правила.

M. Prokhorov 29.07.2019 15:24

поместите метод TearDown в последний

MangduYogii 29.07.2019 15:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы отметили только метод browserTearDown().

Также добавьте тег @After к методу Screenshot():

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

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

}

Привет, приятель! Большое спасибо за помощь. Сейчас это работает.

dev 29.07.2019 15:45

Другие вопросы по теме