2012-06-15 79 views
3

我玩的Mockito(1.9.5),並停留在第一個簡單的測試案例:名單總是返回false,即使大小爲0

List mockedList = mock(ArrayList.class); 
assertEquals(0, mockedList.size()); // Passed 
assertTrue(mockedList.isEmpty()); // Failed 

任何人都可以解釋爲什麼的isEmpty( )size()返回0時返回false?

+1

我知道你現在只是在玩這個遊戲,但List是一個嘲弄的壞事。它已經過很好的測試,易於設置(例如Arrays.asList)並且不依賴於外部資源。正如你已經看到的那樣,在一個無效的狀態下建立一個模擬列表很容易,而不會發生的事情是你使用了一個真正的列表。 –

回答

9

我想,這是因爲它的Mockito不知道isEmpty()語義,當它遇到一個布爾值法是false默認值嘲笑它。 size()也是如此,但這裏的默認值是0

基本上,您需要定義模擬對象的預期行爲。如果你不這樣做,它會返回默認值。

+2

啊,我明白了。所以我必須使用'when(mockedList.isEmpty())。thenReturn(true);'來存根'mockedList'。謝謝! – Genzer

+0

+1用於教學而不是講授。 – jhericks