【发布时间】:2011-06-16 22:20:58
【问题描述】:
我想测试一个使用 Mockito 对其进行了增强的 java 方法。问题是当我不知道如何为增强的工作设定期望时。以下代码来自an unanswered question in the mockito google group:
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.mockito.Mockito;
import org.testng.annotations.Test;
public class ListTest
{
@Test
public void test()
{
List<String> mockList = Mockito.mock(List.class);
Iterator<String> mockIterator = Mockito.mock(Iterator.class);
when(mockList.iterator()).thenReturn(mockIter);
when(mockIter.hasNext()).thenReturn(true).thenReturn(false);
when(mockIter.next()).thenReturn("A");
boolean flag = false;
for(String s : mockList) {
flag = true;
}
assertTrue(flag);
}
}
for 循环中的代码永远不会被执行。为迭代器设置期望不起作用,因为 java 增强的 for 内部不使用列表迭代器。为List.get() 方法设置期望值也不行,因为增强的实现似乎也没有调用列表中的get() 方法。
任何帮助将不胜感激。
【问题讨论】:
标签: java unit-testing for-loop mockito