TestNG Ожидается обработка исключений: есть мой торт и есть его? - PullRequest
0 голосов
/ 25 апреля 2019

Как обрабатывать ожидаемые исключения в TestNG таким образом, чтобы тест проходил независимо от того, генерируется или не генерируется исключение кодом в методе теста

У меня есть метод теста testng, который создает список определенных объектов.В цикле for для каждого из этих объектов выполняется определенное действие.Это действие может или не может вызвать исключение.Как использовать @Test (Ожидаемые исключения) так, чтобы общий результат теста проходил независимо от того, было ли выброшено исключение или нет.Насколько я понимаю, ожидаемые исключения всегда будут искать исключения.Если исключение найдено, оно обрабатывается Testng, и результат теста проходит.Если исключение не найдено или выдается другое исключение, то тест не пройден

public class DemoException {
@Test(expectedExceptions = {ConnectException.class})
public void testException() throws ConnectException
  {
    //pseudo code......   
    //create a List<WebElement> myList
    int count = 0;
    for(WebElemet we: myList){
     we.connect(); //this may or may not throw exception
     we.getResponseMessage(); // further actions on we is needed
     we.disconnect();
     //above 3 are HttpURLConnection methods to be precise
     // Basically do - connect, getResponse, disconnect  

 System.out.println(count++); 
     // print count is needed - exception thrown or not thrown
  }
 }
}

Ожидается: метод теста должен пройти независимо от того, было сгенерировано исключение или нет.Значение счетчика должно быть напечатано, даже если выброшено исключение

Фактический результат: метод теста проходит (исключение выдается), но значение счетчика не печатается.Если добавлена ​​какая-либо логика try-catch, то значение счетчика печатается, но метод теста не выполняется.Что не то, что я хочу.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Попробуйте SoftAssert.Он будет продолжаться, даже если тест сдает https://static.javadoc.io/org.testng/testng/6.13/org/testng/asserts/SoftAssert.html

0 голосов
/ 30 апреля 2019

Почему бы вам не попробовать это:

@Test(expectedExceptions = Exception.class)
public void MyTest() throws Exception {
    int count = 0;
    try {
        for (int i = 0; i < 10; i++) {

            throw new Exception("Fake Exception");
        }
    }
    catch (Exception ex)
    {
        System.out.println(count++);
        throw  ex;
    }
}

Распечатайте счет в журнал / консоль, а затем снова сгенерируйте исключение.

0 голосов
/ 25 апреля 2019

После ссылки на этот пост , Мне удалось явно «изменить» статус результата TestNG, реализовав метод IInvokedMethodListener - override afterInvocation. Результат теста был пройден.

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