2013-07-24 1 views
0

пожалуйста найти кодУтверждение ошибки (TestNG) ловя вопрос с помощью Java

Test(dataProvider = "User_login") 
public void StatusForm_Verification(String uname, String pwd) 
    throws InterruptedException { 
    try { 
NavigateToLogin(); 
Dashboard RD = LoginAs_user(uname, pwd); 
Thread.sleep(2000); 

    if (Integer.parseInt(ReviewedStatuscount) >= 1) { 

     Assert.assertEquals("true", 
       revui.Btn_SaveReview.getAttribute("disabled")); 

     Assert.assertEquals("true", 
       revui.Btn_submitReview.getAttribute("disabled")); 

     Assert.assertEquals("true", 
       revui.Btn_Needmoreinfo.getAttribute("disabled")); 

     status = TestLinkAPIResults.PASSED;  

    } else { 
     throw new SkipException(
       "Test Skipping - Reviewed count is Zero"); 
    } 
    }catch((AssertionError ex) { 
     testlink_result = TestLinkAPIResults.TEST_FAILED; 
     msg = ex.getMessage(); 
} 
} 

, а казнили выше метод, если какой-либо утверждение об ошибке брошено, то в докладе TestNG он должен быть статус СБОЙ - это для правильного

, но если я использую блок catch try (catching AssertionError) в вышеуказанном методе, отчет TestNG всегда был статусом PASS, почему? Как?

ответ

5

Я не знаком с TestLink, но при нормальных обстоятельствах единственный способ, которым TestNG может узнать, не прошел ли ваш тест, - это поймать заброшенное исключение. Когда вы поймаете это исключение, вы «проглотите» его, не позволяя ему когда-либо достичь рамки TestNG.

Чтобы это исправить, просто повторно выдать исключение после выполнения обработки вашего Testlink, например, так:

} catch (AssertionError ex) { 
    testlink_result = TestLinkAPIResults.TEST_FAILED; 
    msg = ex.getMessage(); 

    // Rethrow the AssertionError to signal to TestNG that the test failed. 
    throw ex; 
} 
Смежные вопросы