我正在为在练习中创建的程序编写JUnit。这意味着测试需要涵盖尽可能多的情况,而我对程序中某些内容的实现方式没有任何影响。此外,该程序还会运行一个无限循环,在该循环中,在某一点上它需要用户输入一些内容。
对于JUnit测试,我在另一个程序中运行该程序,Thread并在JUnit中模拟用户输入Thread。
到目前为止,如果程序从中读取用户输入,则一切正常System.in,因为此流可以轻松替换。但是也存在程序交互的可能性,System.console()当前我的测试无法涵盖。
是否有可能模拟的输入System.console(),例如通过用另一个流替换其输入源?
(注意:JUnit测试必须使用Java 6且没有任何外部库(JUnit和Hamcrest除外)。)
编辑:不幸的是,我无法更改要测试的程序的类。