原因是Java的自动装箱。您使用的方法:
public static void assertSame(Object expected, Object actual)
它仅适用于对象。将
ints 传递给此方法时,Java将自动调用
Integer.valueOf( int i )
这些值。因此,强制转换为
int无效。
对于小于128的值,Java具有高速缓存,因此
assertSame()将
Integer对象与其自身进行比较。对于大于127的值,Java将创建新实例,因此
assertSame()将一个
Integer对象与另一个对象进行比较。因为它们不是同一实例,所以该
assertSame()方法返回false。
您应该使用以下方法:
public static void assertEquals(Object expected, Object actual)
代替。此方法使用中的
equals()方法
Object。



