JAVA?IDEA?打開assert?設(shè)置方式
JAVA IDEA 打開assert 設(shè)置
概念
(此處為借鑒前輩們的講解)
斷言(Assertion)是Java中一條語句,包含一個布爾表達(dá)式,當(dāng)該布爾值為真,程序則被認(rèn)為是正確的;當(dāng)布爾值為假,則系統(tǒng)會拋出錯誤。
斷言兩種語句形式
(此處依舊為借鑒前輩們的講解)
assert Expression1 ; assert Expression1 : Expression2 ;`
Expression1
是一個布爾表達(dá)式,作為斷言的真假。Expression2
是一個有返回值的表達(dá)式,用來提供詳細(xì)的錯誤信息。
當(dāng)沒有Expression2時,默認(rèn)拋出沒有詳細(xì)信息的 AssertionError。
JAVA 中的 assert(idea)
在寫assert語句以后運(yùn)行的時候發(fā)現(xiàn)并沒有按預(yù)期的“報錯”,多半是因為沒有打開idea中的assert!
關(guān)于怎么打開其實很簡單:Run—> Edit Configurations —>AsserTest —>VM options —>輸入“-ea”就可以了。
但是!
我在打開我的Edit Configurations時。。。并沒有“AsserTest”。于是再迷茫了一秒鐘后,我自己創(chuàng)建了“AsserTest”,并成功找到“ADD VM options”,然后再彈出的對應(yīng)個位置輸入了“-ea”
然后就可以正常運(yùn)行Asser了。
這是相關(guān)語句以及最后報錯的輸出:
(解釋一下 “isUp(a)” 是我自己寫的小函數(shù),此時返回值為 false)
assert isUp( a ) : "is not up!!" ;
JAVA 關(guān)鍵字 assert
為什么assert 兩個完全不相等的對象或者基本類型卻不報錯,例如圖下
assert new Object() == new Object(); assert 1 == 2;
預(yù)期的會報錯,結(jié)果是沒有任何反應(yīng)
究其原因其實是jvm 啟動未添加 -ea 參數(shù)用來開啟斷言 一般來說,通過IDE開發(fā)工具(IDEA)在執(zhí)行測試方式時會主動打開 -ea
java -ea ...省略... -<className>
但如果沒有使用這些工具將面臨比較尷尬的困境, 而且問題比較隱蔽不容易察覺 所以建議避免使用assert執(zhí)行測試方法,改用Junit Assertions.assert*()執(zhí)行測試方法
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法
這篇文章主要介紹了java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法,涉及java非遞歸算法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07