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

回到顶部