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。
推薦閱讀:
- java之assert關鍵字用法案例詳解
- IDEA中java斷言assert語法及使用
- PHP中斷言函數的使用詳解
- python中的斷言(assert語句)
- IDEA手動添加junit4時出現的問題與解決方法