2013-07-24 28 views
0
捕问题

请找代码,如果在TestNG的报告应该是一个失败状态,然后抛出的任何断言错误断言错误(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(); 
} 
} 

同时执行上面的方法 - 这是正确的

但是,如果我在上述方法中使用Try catch块(捕获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; 
}