java – Mockito:嘲笑一个将在for循环中循环的数组列表 - 代码日志

java – Mockito:嘲笑一个将在for循环中循环的数组列表

我有一个包含以下代码片段的被测方法:

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循环?目前我已经指定了(listOfPaths.get(anyInt()))。thenReturn(tracedPath),但我猜这是从来没有使用过的。

你的问题是当你在一个for-each循环中使用一个集合时,它的iterator()方法被调用;你没有扼杀那个特定的方法。

而不是嘲笑列表,我强烈建议您只传递一个真正的列表,其中的元素只是您的嘲弄TracedPath,多次您想要的。就像是

listOfPaths = Arrays.asList(mockTracedPath, mockTracedPath, mockTracedPath);
http://stackoverflow.com/questions/18483176/mockito-mocking-an-arraylist-that-will-be-looped-in-a-for-loop

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Mockito:嘲笑一个将在for循环中循环的数组列表