Junit: Assert.assertNotSame возвращает true, несмотря на то, что две строки равны
Я использую JUnit 4.12 и PowerMock 1.6.2. У меня есть следующий код:
import org.junit.Assert;
...
System.out.println("equals?" + obj.equals(myObj.getUser().getUserName()));
Assert.assertNotSame(obj.getUserName(), myObj.getUser().getUserName());
Система выводит вызовы equals? true
, однако следующая строка подтверждения успешна, где я ожидаю, что она потерпит неудачу, если строки равны. Почему нет assertNotSame
не работает, и какой метод я должен использовать?
1 ответ
Решение
assertNotSame(a, b)
проверяет, что a != b
то есть, что a и b не являются ссылками на один и тот же объект. Это сильно отличается от тестирования a.equals(b)
Значение false, что говорит о том, что две строки не имеют одинаковых символов.
Вы должны использовать
assertFalse(obj.getUserName().equals(myObj.getUser().getUserName()))
Я бы порекомендовал использовать AssertJ, который имеет десятки гораздо более выразительных утверждений:
assertThat(myObj.getUser().getUserName()).isNotEqualTo(obj.getUserName());