簡體   English   中英

當使用assertEquals時,應該捕獲哪種異常?

[英]What kind of exception should go in the catch with assertEquals?

我正在制作一個網絡驅動程序,其中一部分是檢查標題以確保它在正確的頁面上。 只是為了我現在的利益,我希望它在標題不匹配時顯示一個對話框,但現在所做的只是在控制台中給我一條錯誤消息。 我相信這是我的例外。 有什么建議么?

try{
    assertEquals("Current page title", "Account Inventory - Select Manager", pageTitle);
}
catch(Exception ex)
{

    JFrame frame = new JFrame("Message");
    JOptionPane.showMessageDialog(frame ,
            "The title does not match");
}

當不滿足條件時, assertEquals引發AssertionError 因此,您可能應該明確捕獲該錯誤,或​​者擴大捕獲范圍以包括Throwable而不是Exception

請參閱下面的類型層次結構圖,以了解為什么catch (Exception e)無法捕獲AssertionError

java.lang.Object
  |--- java.lang.Throwable
         |--- java.lang.Error
                | --- java.lang.AssertionError  // not a descendent of Exception
         |--- java.lang.Exception

但是...測試通常應該是自動化的,因此我無法想象為什么您要通過顯示對話框來引入人為因素。

實際上,斷言不是用於處理異常,而是用於斷言某些測試用例。 如果斷言的情況不成立,則輸入存在嚴重問題,導致需要特別注意的問題,這就是為什么斷言失敗時會收到AssertionError的原因。

而且我認為您正在混合使用異常和錯誤的意圖。

我假設這是單元測試代碼。 您可以通過兩種方式處理它。

  1. 捕獲錯誤並寫入錯誤日志。
  2. 不要捕獲異常,並允許調用堆棧中的某個方法進一步處理該異常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM