解決報java.lang.AssertionError錯誤的問題
報java.lang.AssertionError錯誤
在使用Assert.assertEquals時報一個錯誤
首先我們的明白Assert的用法
assert <boolean表達式>
- 如果<boolean表達式>為true,則程序繼續執行。
- 如果為false,則程序拋出AssertionError,並終止執行
assert <boolean表達式> : <錯誤信息表達式>
- 如果<boolean表達式>為true,則程序繼續執行。
- 如果為false,則程序拋出java.lang.AssertionError,並輸出<錯誤信息表達式>。
ctrl點進Assert.assertEquals發現
進行的是判斷兩個Object類型的值,他們兩個比較的是引用地址是否相等, 並沒有對內容進行比較:
如果兩者一致, 程序繼續往下運行.
如果兩者不一致, 中斷測試方法, 拋出異常信息 AssertionFailedError
而我寫的斷言是這樣的:
Assert.assertEquals(7, userList.size());
錯誤中明顯指出,Excepted是7,actual是8,因此兩個值不一致,報錯誤
因此把7改成8就行
Assert.assertEquals(8, userList.size());
java.lang.AssertionError: Expected:2 Actual:9
我是在單元測試find的jdbc代碼時遇到的
單元測試代碼如下
@Test public void testFind() throws Exception { //構建測試數據 //創建目標類的對象 CategoryDaoImpl dao = new CategoryDaoImpl(); //調用對象的目標方法 List<Category> list = dao.find(); int actual = list.size(); int expected = 2; //使用斷言類的方法判斷;比較實際和預計的結果 Assert.assertEquals(actual, expected); }
如果你也報瞭如題的錯誤,
你看看你的數據庫數據條數是不是和expected的2不一樣
是不是錯誤裡寫的actual 的值,比如我的數據庫就有9條
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java Assert.assertEquals案例詳解
- Assert.assertEquals()方法參數詳解
- Assert.assertEquals的使用方法及註意事項說明
- python中的斷言(assert語句)
- java之assert關鍵字用法案例詳解