Junit中Assert.assertEquals()和Assert.assertSame方法有什麼異同

1)提供的接口數量不徹底相同。
assertEquals支持boolean,long,int等等java primitiveType變量。
assertSame只支持Object。
java

 

2)比較的邏輯不一樣,結果可能不一樣。
assertSame是對象直接比較。assertEquals能利用被比較對象提供的比較邏輯來進行比較。
使得一樣的條件下,二者的運行結果不必定相同。
簡單解釋以下:
assertEquals(Object A,  Object B) 的比較邏輯:
若是 A,B都是Null,返回true。不然調用 A.equals(B)來判斷。spa

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的結果相同。接口

相關文章
相關標籤/搜索