2015-09-04 1 views
0

Я использую JUnit 4.12 и PowerMock 1.6.2. У меня есть следующий код:Junit: Assert.assertNotSame возвращает true, несмотря на то, что две строки равны

import org.junit.Assert; 
... 
System.out.println("equals?" + obj.equals(myObj.getUser().getUserName())); 
Assert.assertNotSame(obj.getUserName(), myObj.getUser().getUserName()); 

Система печатает из вызовов equals? true, однако следующая строка утверждают преуспевает, где я ожидаю, что это провал, если строки равны. Почему не assertNotSame не работает и какой метод я должен использовать?

ответ

2

assertNotSame(a, b) проверяет, что a != b, то есть, a и b не являются ссылками на один и тот же объект. Это очень отличается от тестирования, что a.equals(b) является ложным, что заставляет, что две строки не имеют одинаковых символов.

Вы должны использовать

assertFalse(obj.getUserName().equals(myObj.getUser().getUserName())) 

Я бы рекомендовал использовать AssertJ, который имеет десятки гораздо более выразительных утверждений:

assertThat(myObj.getUser().getUserName()).isNotEqualTo(obj.getUserName());