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)!