2011-09-13 25 views
0

假設你有一個像JUnit中,測試了 「新」 的參考

public Something copy() { 
    return new Something(); 
} 

的方法在你的JUnit,你有

Something s1 = new Something(); 
Something s2 = s1.copy() 

其他然後

assertTrue (s1 != s2); 
assertTrue (s2 != null); 
assertTrue (s1.toString().equals(s2.toString))); 

是否有任何額外的你可以確認一個NEW引用是由copy()返回嗎?

回答

2

第一個是足夠的,檢查他們不一樣,但也有內置的JUnit斷言:

assertNotSame(s1, s2); 
+0

很酷;謝謝Jon – JAM

0

當然使用Assert.assertTrue(s1, s2)

而且這是比較方式。它在內部調用Something.equals()並拋出異常equals返回false。

+0

我認爲你錯過了「他們不能是同一個參考」部分 - 而assertTrue並不是你所說的任何斷言,我懷疑。 –

+0

但是,如果有些重載等於上述可能不會產生所需的結果。 –

0

測試這樣的事情另一個偉大的方式是測試的Mockito框架(http://code.google.com/p/mockito/)

它可以讓你驗證,只有某些事情被稱爲N次,或者根本沒有的東西,如:

Mockito.verify(mockOne, times(1)).mockedFunction();

它驗證mockOnemockedFunction只有一次調用。