如何在不干扰实际类别的情况下模拟另一类别(测试类别)的扫描仪输入

时间:2019-02-13 19:30:44

标签: java java.util.scanner inputstream

我想测试另一个类(测试类)中的消息方法,但要以独立的方式进行测试,以便测试类调用消息方法并输入行数和实际消息的预定义值。因此,当调用该方法时,在询问行号时在控制台中输入值1,然后在询问消息时,在控制台中输入字符串“ hi,您今天好吗”。下面有一个类的消息方法,以及测试用户输入的测试类的一部分。

所以我的问题是,如何才能使测试类调用message方法(位于另一个类中),并且当该message方法运行时,根据需要将值输入扫描仪,然后该message方法继续运行到最后。

我认为这与输入流有关。但是,由于我试图在另一个类的扫描仪中输入值,所以它不起作用。我已经看到了与模拟扫描仪输入有关的类似问题,但这些问题属于同一班级,并以相同的方法直接与扫描仪对话。我希望这些东西分开,这样,如果删除/删除测试类,则消息方法所在的类仍将像正常情况一样工作。

Click Here To See The Console For The Message Method

    SarmanEncryption inputOutput= new SarmanEncryption();
    inputOutput.message();
    InputStream num = new ByteArrayInputStream(keyTest5.getBytes());
    System.setIn(Integer.parseInt(num));
    InputStream message = new ByteArrayInputStream(keyTest6.getBytes());
    System.setIn(message);

String keyTest5 =“ 1”; 字符串keyTest6 =“ adbh,sdba”;

{{1}}

1 个答案:

答案 0 :(得分:0)

请考虑重写代码以使其易于测试。如果要测试消息方法,则可以将输入/输出流传递给该方法。

您还可以在具有被测方法的对象的构造函数中执行此操作(注入对输入/输出流的依赖性)。

在关闭流时要小心。