JAVA IDEA 打開assert 設置方式

JAVA IDEA 打開assert 設置

概念

(此處為借鑒前輩們的講解)

斷言(Assertion)是Java中一條語句,包含一個佈爾表達式,當該佈爾值為真,程序則被認為是正確的;當佈爾值為假,則系統會拋出錯誤。

斷言兩種語句形式

(此處依舊為借鑒前輩們的講解)

assert	Expression1 ;
assert	Expression1 : Expression2 ;`
  • Expression1是一個佈爾表達式,作為斷言的真假。
  • Expression2是一個有返回值的表達式,用來提供詳細的錯誤信息。

當沒有Expression2時,默認拋出沒有詳細信息的 AssertionError。

JAVA 中的 assert(idea)

在寫assert語句以後運行的時候發現並沒有按預期的“報錯”,多半是因為沒有打開idea中的assert

關於怎麼打開其實很簡單:Run—> Edit Configurations —>AsserTest —>VM options —>輸入“-ea”就可以瞭。

但是!

我在打開我的Edit Configurations時。。。並沒有“AsserTest”。於是再迷茫瞭一秒鐘後,我自己創建瞭“AsserTest”,並成功找到“ADD VM options”,然後再彈出的對應個位置輸入瞭“-ea”

然後就可以正常運行Asser瞭。

這是相關語句以及最後報錯的輸出:

(解釋一下 “isUp(a)” 是我自己寫的小函數,此時返回值為 false)

assert isUp( a ) : "is not up!!" ;

JAVA 關鍵字 assert

為什麼assert 兩個完全不相等的對象或者基本類型卻不報錯,例如圖下

assert new Object() == new Object();
assert 1 == 2;

預期的會報錯,結果是沒有任何反應

究其原因其實是jvm 啟動未添加 -ea 參數用來開啟斷言 一般來說,通過IDE開發工具(IDEA)在執行測試方式時會主動打開 -ea

java -ea ...省略... -<className>

但如果沒有使用這些工具將面臨比較尷尬的困境, 而且問題比較隱蔽不容易察覺 所以建議避免使用assert執行測試方法,改用Junit Assertions.assert*()執行測試方法

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: