Java BufferedReader模拟。readLine()只需调用一次
任何人都可以给出一个建议,如何在(bufferedReader.readLine())时生成Java BufferedReader模拟。readLine()只需调用一次,java,junit,mockito,Java,Junit,Mockito,任何人都可以给出一个建议,如何在(bufferedReader.readLine())时生成,然后返回(line) 只打一次电话? 因为我在所有行中都有一个while循环,我只想测试一行。如果您想更改后续调用的返回值,return将使用varargs when(bufferedReader.readLine()).thenReturn(line, null); 这将导致它第一次返回行,之后每次返回null 编辑: 请注意,您还可以执行以下操作以获得相同的结果: when(bufferedRea
,然后返回(line)代码>
只打一次电话?
因为我在所有行中都有一个while循环,我只想测试一行。如果您想更改后续调用的返回值,return将使用varargs
when(bufferedReader.readLine()).thenReturn(line, null);
这将导致它第一次返回行,之后每次返回null
编辑:
请注意,您还可以执行以下操作以获得相同的结果:
when(bufferedReader.readLine()).thenReturn(line).thenReturn(null);
如果要更改后续调用的返回值,则return接受varargs
when(bufferedReader.readLine()).thenReturn(line, null);
这将导致它第一次返回行,之后每次返回null
编辑:
请注意,您还可以执行以下操作以获得相同的结果:
when(bufferedReader.readLine()).thenReturn(line).thenReturn(null);
我认为最好使用真实但简单的BufferedReader
而不是存根来进行测试
BufferedReader reader = new BufferedReader(
new StringReader(line)
);
BufferedReader的契约是复杂的。因此,如果更改代码的内部结构(例如,读取单个字符而不是行),尽管代码仍然正确,使用存根的测试可能会失败。IMHO最好使用真实但简单的BufferedReader
而不是存根进行测试
BufferedReader reader = new BufferedReader(
new StringReader(line)
);
BufferedReader的契约是复杂的。因此,如果您更改代码的内部结构(例如,读取单个字符而不是行),尽管代码仍然正确,但存根测试可能会失败。您正在询问如何使其返回一次行,然后返回null,对吗?你能不能也把你到目前为止的代码贴出来?你是在问如何让它返回一次行,然后返回null,对吗?你能不能也把你目前掌握的密码发出来?