JUnit中assertEquals和assertSame方法的不同

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章