ITestResult возвращает статус Success, даже если метод в классе testng выдает исключение - PullRequest
0 голосов
/ 27 декабря 2018

Я добавил класс testListener и с моим тестовым кодом, но даже если вызывающий метод в классе testNG получает исключение, состояние ITestResult показывает Успех и переходит к методу onTestSuccess(ITestResult tr).

класс testNG

    @Test  (invocationCount=1)
    public void offersPageRefresh() 
    {
       //Some steps
       cart.selectAndVerifyOffersBanner();
    }

Класс страницы корзины

public void selectAndVerifyOffersBanner()
{
    try {
            //Some steps.
            moveToElement(selectOffersButton_MobileSite,driver);
            ExtentTestManager.getTest().log(LogStatus.PASS, "Offers banner selected and verified successfully.");
            } catch (WebDriverException | InterruptedException e) {
            ExtentTestManager.getTest().log(LogStatus.FAIL, "Offers banner selection and verification Failed.");
            e.printStackTrace();
        }
    }

Теперь, если элемент selectOffersButton_MobileSite отсутствует, он выдает NoSuchElementExceptionи входит в блок catch, и регистратор правильно печатает сообщение об ошибке.Но по завершении offersPageRefresh() ITestResult возвращает статус Success и переходит к onTestSuccess(ITestResult tr) и показывает статус теста как пройденный.

Какие изменения необходимы для исправления этой конкретной ситуации.Пожалуйста, предложите и спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

ITestResult дает результат @Test в зависимости от того, как он обрабатывается.

Если @Test уже обработан блоком try/catch, это означает, что мы разрешаем продолжить выполнение теста.И если выбрасывает исключение, он обрабатывается блоком catch.Так что здесь @Test сбой не изображается из-за обработки try/catch.

Если вы хотите отследить свое исключение через ITestResult, вам следует избегать обработки try/catch.

Справочный пример

0 голосов
/ 27 декабря 2018

здесь selectAndVerifyOffersBanner() вы обрабатываете исключение с помощью try/catch Так что теперь исключений нет, и вы тестируете шоу как проходные.

В catch, как только вы закончите регистрацию, сгенерируйте то же исключение, которое вы обрабатываете, например

 throw e;

или

throw new Exception(e.getMessage()); //it create a new Exception object and throw it

Тогда проверка завершится неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...