使用Mockito isEmpty的模拟列表总是返回false,即使大小为0

Gen*_*zer 4 java mocking mockito

我正在和Mockito(1.9.5)一起玩,并坚持第一个简单的测试用例:

List mockedList = mock(ArrayList.class);
assertEquals(0, mockedList.size()); // Passed
assertTrue(mockedList.isEmpty()); // Failed
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么isEmpty()在这里返回false而size()返回0?

bru*_*nde 12

我认为这是因为mockito不知道它的语义含义,isEmpty()当遇到布尔方法时,它会使用默认值进行模拟false.同样的想法发生,size()但这里的默认值是0.

基本上,您需要定义模拟对象的预期行为.如果不这样做,它将返回默认值.

  • 啊,我明白了.所以我必须使用`when(mockedList.isEmpty()).thenReturn(true);`来存储`mockedList`.谢谢! (2认同)