Причиной является автобокс Java.
Вы используете метод:
public static void assertSame(Object expected, Object actual)
Работает только с объектами. Когда вы передаете int
s этому методу, 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
.