2012-06-15 44 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