Java 启动长时间运行的进程,并在进程终止之前检查输出

Java 启动长时间运行的进程,并在进程终止之前检查输出,java,processbuilder,Java,Processbuilder,我有一个问题,我想从正在运行的Java进程内部启动一个长时间运行的进程,并在长时间运行的进程终止之前获得初始输出 例如,运行java-jar myapp.jar,它有单元测试,并启动安装在同一台机器上的应用程序的长时间运行过程,该过程将一直运行到我的所有测试完成为止 在正常情况下,我只需使用ProcessBuilder并执行以下操作: ProcessBuilder pb = new ProcessBuilder("ls"); Process p =

我有一个问题,我想从正在运行的Java进程内部启动一个长时间运行的进程,并在长时间运行的进程终止之前获得初始输出

例如,运行java-jar myapp.jar,它有单元测试,并启动安装在同一台机器上的应用程序的长时间运行过程,该过程将一直运行到我的所有测试完成为止

在正常情况下,我只需使用ProcessBuilder并执行以下操作:

ProcessBuilder pb = new
                ProcessBuilder("ls");
        Process p = pb.start();
        BufferedReader br=new BufferedReader(
                new InputStreamReader(
                        p.getInputStream()));
        String line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }

我怎样才能做类似的事情,启动一个长时间运行的进程,它不会在几分钟内终止,或者直到我终止它时才得到输出?任何可行的解决方案都可以,它不必使用ProcessBuilder。

您是否尝试使用Mockito框架进行测试?在那里,您可以在测试之前添加@Before,在输出终止之前运行@Before。在这里你可以把它全部读出来

在@Before块中运行它是个好主意,但我不知道如何在命令行应用程序启动时获得初始输出。