2017-04-04 28 views
-1

任何人都可以给出一个建议如何使when(bufferedReader.readLine()).thenReturn(line); 调用一次? 因为我在所有行中都有一个while循环,我只想测试单行。BufferedReader模拟。 readLine()只需要调用一次

+0

你问的是如何使它返回一次,然后null?你还可以发布你迄今为止的代码吗? –

回答

2

thenReturn如果要更改后续调用的返回值,则需要可变参数。

when(bufferedReader.readLine()).thenReturn(line, null); 

这将导致它第一次返回行,每次后都返回null。

编辑: 请注意,您还可以执行以下操作来得到相同的结果:

when(bufferedReader.readLine()).thenReturn(line).thenReturn(null); 
0

恕我直言,这是更好地使用一个真实的,但简单的BufferedReader,而不是为你的测试存根。

BufferedReader reader = new BufferedReader(
    new StringReader(line) 
); 

BufferedReader的合同很复杂。因此,如果更改了代码的内部结构(例如,读取单个字符而不是行),那么使用存根测试可能会失败,但代码仍然正确。

相关问题