当从java运行bat文件时,有没有办法模拟用户输入?

当从java运行bat文件时,有没有办法模拟用户输入?,java,junit,Java,Junit,我试图通过junit测试bat文件的工作情况。在大多数情况下,我能够调用并获取响应代码。但是,在这种情况下,用户必须向终端提供手动输入才能继续。是否有任何方法来模拟输入或解决此问题 注意:我无法更改实际代码以接受命令行参数作为输入 我使用process builder调用我的bat文件 示例代码段:- File dir = new File("E:\\test"); ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "

我试图通过junit测试bat文件的工作情况。在大多数情况下,我能够调用并获取响应代码。但是,在这种情况下,用户必须向终端提供手动输入才能继续。是否有任何方法来模拟输入或解决此问题

注意:我无法更改实际代码以接受命令行参数作为输入

我使用process builder调用我的bat文件 示例代码段:-

File dir = new File("E:\\test");
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start","test.bat");
        pb.directory(dir);
        Process p = pb.start();

您需要使用
pb.redirectInput()
获取进程的输入流,然后将用户在进程以交互方式运行时输入的数据写入该流

有关文档和示例代码,请参阅:

也许您应该显示您现有的Java代码,以防需要回答。
System.setIn(…)
和批处理级别的
ProcessBuilder.redirectInput
虽然您可以使用java来实现这一点,但也有其他专门编写的解决方案来实现这类功能,例如。