Блок захвата не выполняется при сбое метода блока try - PullRequest
0 голосов
/ 24 сентября 2018

Я написал блок try catch для выполнения теста, и если он не пройден, сделайте снимок экрана в блоке catch.Но блок catch не выполняется, а метод @After выполняется, когда метод в блоке try завершается неудачно.См. Приведенный ниже код.

Я не могу понять, в чем здесь дело.

@Test
public void testScenarios(){
    try {
        test();
    }catch (Exception e){
        log.error(e.getLocalizedMessage(), e);
        log.info("Capturing the screenshot for the failed test.");
        takeScreenshot();
    }
}

public void test() {

    MyAccountPage myAccountPage = initElements(driver(), MyAccountPage.class);
    myAccountPage.clickOrderHistoryAndDetails();

    OrderHistoryPage orderHistoryPage = initElements(driver(), OrderHistoryPage.class);
    orderHistoryPage.selectLatestOrder();
    orderHistoryPage.verifyProduct(colour);

}

мой тест не пройден в orderHistoryPage.verifyProduct (color);из-за невозможности найти элемент.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я нашел свою ошибку и исправил ее.Первой осенью контроль не собирался пробовать вообще.поэтому исправили эту проблему, и теперь блок catch выполняется всякий раз, когда блок try завершается неудачей, и снимки экрана (-ов) записываются соответственноСпасибо за помощь ребята.

0 голосов
/ 24 сентября 2018

Метод "test" не выдает никаких исключений.

//Exception is generic, you can throw your own Exception subclass
public void test() throws Exception{

    if(OK){
      //Good code
    }else{
      //Launch your exception. Es.
      throw new Exception();
    }

 } 

Очевидно, вы можете выбрать логику выполнения, которую вы предпочитаете, это только пример.

В вашем случае, метод «verifyProduct» вместо того, чтобы перехватить ошибку, должен выдать ее вызывающей стороне.

Я не знаю, как работает «verifyProduct», но это может быть что-то вроде этого:

if(!orderHistoryPage.verifyProduct(colour)){
   throw new Exception();
}

Но это только в том случае, если verifyProduct возвращает логическое значение, если он не находит элемент (Es. 1 для успеха, 0 для ошибки)

Для получения дополнительной информации проверьте эту страницу

...