2015-09-04 93 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()); 
相關問題