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