Есть ли способ получить полную ошибку / исключение, используя ITestResult в методе After? - PullRequest
0 голосов
/ 17 сентября 2018
@Test(priority = 16, enabled = true)
    public void C2410859_FilterAlertsByCard()
            throws IOException, InterruptedException, ATUTestRecorderException, APIException {

        record.start();
        launchUrl();
        startResult();
        startTestCase(Thread.currentThread().getStackTrace()[1].getMethodName().toString());
        LoginApplication(username, password);
        HomePage homePage = new HomePage();
        homePage.MyAlerts.click();
        MyAlerts myalerts = new MyAlerts();

    }




    @AfterMethod
    public void afterMethod(ITestResult result) throws ATUTestRecorderException {
        resultOfTest(result);   
        endTestcase();
        endResult();
        record.stop();
        closeBrowsers();
    }

resultOfTest:

public static void resultOfTest(ITestResult result) {
        try
         {
            if(result.getStatus() == ITestResult.SUCCESS)
            {

                //Do something here
                System.out.println("passed **********");
            }

            else if(result.getStatus() == ITestResult.FAILURE)
            {
                 //Do something here
                System.out.println("Failed ***********");
                test.fail("This test is failed due to "+ result.getThrowable());

            }

             else if(result.getStatus() == ITestResult.SKIP ){

                System.out.println("Skiped***********");

            }
        }
           catch(Exception e)
           {
             e.printStackTrace();
           }
    }

Это просто отображает ошибку одной строки (например, исключение нулевого указателя).Есть ли способ получить полную ошибку / исключение с помощью ITestResult в методе After?

1 Ответ

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

Вы можете получить его в AfterMethod с помощью объекта ITestResult, если вещи не обрабатываются блоком try catch ().

Пример:

Тип исключения: java.lang.ArithmeticException: / от нуля

@Test
public void testDemo() {
    int i;
    i = 9 / 0;
}

@AfterMethod
public void afterMethod(ITestResult result) {
    if (result.getStatus() == ITestResult.FAILURE) {
            String testResult = result.getThrowable();
            System.out.println(testResult);
    } 
}

Здесь метод testDemo получает сбой по арифметическому исключению, и поэтому в ITestResult есть метод сбоя. Используя метод result.getThrowable();, вы можете получить описание исключения.

Но, если все обрабатывается блоком try-catch (), вы не можете получить подробности об исключении в AtferMethod.

@Test
public void testDemo() {
    try {
        int i;
        i = 9 / 0;
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@AfterMethod
public void afterMethod(ITestResult result) {
    if (result.getStatus() == ITestResult.FAILURE) {
            String testResult = result.getThrowable();
            System.out.println(testResult);
    } 
}

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

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