gpt4 book ai didi

java - JUnit 使用 Mockito 测试用户输入

转载 作者:行者123 更新时间:2023-12-01 22:34:23 27 4
gpt4 key购买 nike

我在使用模拟框架 Mockito 时遇到问题。我想测试用户在控制台中键入的输入。如果没有 Mocking,它工作得很好,但有了它,我不知道如何从函数中获取返回值,该函数获取控制台中的输入。

没有 Mockito:

读取输入法

public int readUserInput() {
BufferedReader console = new BufferedReader(new InputStreamReader(
System.in));
return Integer.parseInt(console.readLine());
...
}

测试方法:

public class TestClass {
Controller contr = new Controller();
@Test
public void testUserInput() {
System.setIn(new ByteArrayInputStream("1".getBytes()));
assertEquals(1, contr.readUserInput());
System.setIn(System.in);
}
}

但是现在如何使用 Mockito 编写测试。我尝试了几种方法,但没有一个有效。我一直得到 0,而不是我在 ByteArrayInputStream 中写入的数字。

提前致谢!

最佳答案

您需要模拟 BufferedReaderreadLine() API 来返回您的值。即

 Mockito.when(mockedBufferedReader.readLine())
.thenReturn("1");

现在,当您从测试中调用 readInput() 时,将调用您的模拟缓冲读取器的 API。希望这能回答您的问题。

关于java - JUnit 使用 Mockito 测试用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27105951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com