使用Mockito的JUnit测试用户输入

姆鲍尔

我对Mocking Framework 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

提前致谢!

普斯卡

您需要使用MockBufferedReaderreadLine()API来返回您的值。IE

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章