Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BufferedReader模拟。readLine()只需调用一次_Java_Junit_Mockito - Fatal编程技术网

Java 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

任何人都可以给出一个建议,如何在(bufferedReader.readLine())时生成
,然后返回(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,对吗?你能不能也把你目前掌握的密码发出来?