2015-09-04 56 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)为false的测试完全不同,后者指出两个字符串不具有相同的字符。

您应该使用

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

我会建议使用AssertJ,其中有几十个更富于表现力的断言:

assertThat(myObj.getUser().getUserName()).isNotEqualTo(obj.getUserName()); 
相关问题