Junit:Assert.assertNotSame 尽管两个字符串相等但返回 true
Junit: Assert.assertNotSame returning true despite the fact the two strings are equal
我正在使用 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
不起作用?我应该使用什么正确的方法?
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());
我正在使用 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
不起作用?我应该使用什么正确的方法?
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());