在使用TestNG 進行測試時,有些場景,我們通過向測試方法傳入某些異常的參數,期望代碼拋出異常時,我們可以通過 @Test( expectedExceptions, expectedExceptionsMessageRegExp)實現,並且可以實現異常信息的斷言。
運行時異常與檢查異常
Java中 對於異常分為運行時異常與檢查異常。
運行時異常,編譯時不被檢查的異常,不需要用throws 聲明拋出 異常對象所屬類,也可以不用throw 拋出異常對象或異常引用。對於調用該方法,也不需要放於 try-catch 代碼塊中。(避免程序代碼錯誤被掩蓋在運行中無法察覺)
檢查異常,編譯時被檢測的異常,一旦用throw 拋出異常,如果當前方法可處理異常,那麼需要在該方法內通過 try-catch 處理異常。如果當前方法不具備該異常的處理能力,那麼必須在參數列表後方法體 前使用 throws 聲明異常所屬類,交給方法的調用方處理 。
運行時異常測試(RuntimeException)
首先先創建一個自定義運行時異常類 CustomRuntimeException,如下
創建一個測試類:runtimeExceptionTest.jav ,其代碼如下所示 -
執行該測試用例,將拋出如下異常信息
我們期望結果就是拋出該異常信息,但此時用例執行失敗了。與我們想要的期望在拋出異常時,用例執行成功的結果不一致,此時我們可以在 @Test註解中通過expectedExceptions參數實現,如下:
此時,執行測試用例時,執行結果是成功的,如下
我們還可以對拋出異常的信息進行判斷,同樣在@Test註解中通過expectedExceptionsMessageRegExp參數實現,如下:
當拋出的異常信息與expectedExceptionsMessageRegExp參數不一致時,用例將運行失敗。
檢查異常測試(Exception)
首先先創建一個自定義檢查異常類 CustomException ,如下
當進行檢查類異常測試時,只需要在測試方法的參數列表後方法體 前用 throws 聲明異常所屬類,代碼如下