2013-08-30 130 views
3

我有一個由幾千個類組成的大型項目。今天我發現,對於某些輸入,在啓用聲明運行時會計算出不同的結果。因爲斷言本身不會拋出一個AssertionError(我已經有一個斷點),這意味着隱藏在代碼中的某個地方是一個聲明語句,它具有不需要的副作用。問題是我不知道我的100個斷言中的哪一個導致了這個問題。是否可以在eclipse中設置斷點斷點?

由於assert不是一個方法,而是一個關鍵字在Java中,所以我在如何設置每次調用assert時會觸發的斷點處於缺失狀態。

可能的解決方法,我發現:

  • 註釋掉斷言逐一和運行程序,終於找到罪魁禍首。
  • 使用代碼覆蓋率工具(如eclEmma)來運行我的測試用例,以過濾掉某些斷言語句。
  • 僅對特定包啓用斷言才能縮小可能導致原因的斷言數。
  • 做一個搜索和替換(使用正則表達式)來替換斷言,我可以放置一個斷點的實用工具方法。

儘管如此,我想知道是否有人知道斷言的方式,即使條件評估爲真。

回答

4

轉到運行 - >添加搜索框的Java異常斷點 類型「Asse田」 選擇java.lang.AssertionError和OK

現在Eclipse會暫停在斷言

+0

謝謝你,但不幫助 - 「由於斷言本身不會拋出一個AssertionError(我已經有一個斷點),這意味着隱藏在代碼中的某個地方是一個斷言聲明,它具有不需要的副作用。」 – Axel

+0

我想我不明白這個問題。當我進行練習時,Eclipse會在我的斷言聲明失敗時暫停。當然,我必須在運行設置虛擬機參數中啓用(啓用斷言)。 – Fracdroid

+0

是的,那是有效的。但是,當它沒有失敗時,我需要一種暫停的方式。目前還沒有解決方案。 – Axel