Mockito:模拟将在for循环中循环的arraylist
我有一个包含以下代码段的受测试方法:
private void buildChainCode(List<TracedPath> lines){ for(TracedPath path : lines){
/.../
}
}
我的单元测试代码如下所示:
public class ChainCodeUnitTest extends TestCase { private @Mock List<TracedPath> listOfPaths;
private @Mock TracedPath tracedPath;
protected void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this);
}
public void testGetCode() {
when(listOfPaths.get(anyInt())).thenReturn(tracedPath);
ChainCode cc = new ChainCode();
cc.getCode(listOfPaths);
/.../
}
}
问题是,在运行测试时,测试代码永远不会进入for循环。我应该在什么时候指定条件才能进入for循环?目前,我已指定when(listOfPaths.get(anyInt())).thenReturn(tracedPath)
,但我猜它从未使用过。
回答:
您的问题是,在for-each循环中使用集合时,iterator()
将调用其方法;而且您还没有使用该特定方法。
我强烈建议您传递一个真实的列表,而不是模拟列表,该列表中的元素只是您的模拟对象TracedPath
,您可以根据需要进行多次。就像是
listOfPaths = Arrays.asList(mockTracedPath, mockTracedPath, mockTracedPath);
以上是 Mockito:模拟将在for循环中循环的arraylist 的全部内容, 来源链接: utcz.com/qa/415025.html