首頁  >  文章  >  Java  >  JUnit中assertEquals和assertSame方法的不同

JUnit中assertEquals和assertSame方法的不同

黄舟
黄舟原創
2016-12-28 11:40:451463瀏覽

1)提供的介面數量不完全相同。
assertEquals支援boolean,long,int等等java primitiveType變數。
assertSame只支援Object。

 

2)比較的邏輯不同,結果可能不同。
assertSame是物件直接比較。 assertEquals能利用被比較物件提供的比較邏輯來進行比較。
使得同樣的條件下,兩者的運行結果不一定相同。
簡單解釋如下:
assertEquals(Object A,  Object B) 的比較邏輯:
如果 A,B都是Null,回傳true。否則呼叫 A.equals(B)來判斷。

assertSame(Object A, Object B)的比較邏輯:
以A == B運算的結果來判斷。

A.equals(B) 和 A==B 的差異在於。
如果A沒有重寫java.lang.Object的equals方法,
那麼就是兩個java物件的記憶體位址比較,比較結果和 A==B的結果相同。
如果A重寫了equals方法(例如GregorianCalendar,BigDecimal類別),
那麼比較的結果不一定和A==B的結果相同。

 以上就是JUnit中assertEquals和assertSame方法的不同的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn