我正在使用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());
system out调用显示
equals? true
,但是以下断言行成功,如果字符串相等,我希望在该行中失败。为什么assertNotSame
不起作用,我应该使用什么正确的方法? 最佳答案
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());