解決報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。

推薦閱讀: