当尝试模拟控制台输入时,测试的行为不符合我的预期
我为控制台输入、输出创建了一个包装类,并尝试模拟其行为
public class ConsoleReaderWriter {
public void printLine(String message) {
System.out.println(message);
}
public String readLine() {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String result = "";
try {
result = bufferedReader.readLine();
} catch (IOException e) {
System.err.print(e);
}
return result;
}
}
要测试的方法
public String readPlayerName() {
consoleReaderWriter.printLine("> What is your name?");
String playerName = consoleReaderWriter.readLine();
return playerName;
}
我的测试尝试
@Test
public void testReadPlayerNameShouldReturnNameString() {
String testName = "John Doe";
ConsoleReaderWriter testReaderWriter = mock(ConsoleReaderWriter.class);
when(testReaderWriter.readLine()).thenReturn("John Doe");
assertEquals(testName, underTest.readPlayerName());
}
我正在使用莫基托。当我运行测试时,它会提示我从控制台输入输入。测试通过,如果我输入预期的名称,但是,我想让它自动进行,这样我就不必在测试运行时输入任何输入。提前致谢。
慕沐林林
一只名叫tom的猫
BIG阳
相关分类