Выход из процесса Java всегда пуст - PullRequest
0 голосов
/ 19 февраля 2019

Я запускаю простой модульный тест для вывода версии Java с использованием внешнего процесса.Вывод появляется в консоли, и процесс выполняется успешно, но вывод всегда пуст при вызове getInputStream ().Я не понимаю, почему.

@Test
public void testProcess() throws IOException, InterruptedException, ExecutionException {
    ProcessBuilder processBuilder = new ProcessBuilder("java", "-version");
    processBuilder.inheritIO();
    processBuilder.redirectErrorStream(true);

    Process process = processBuilder.start();
    int exitCode = process.waitFor();
    assertEquals("No errors should be detected", 0, exitCode);

    BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream()));
    List<String> results = output.lines()
        .collect(Collectors.toList());

    // This line always fails
    assertThat("Result should not be empty", results, is(not(empty())));
    assertThat("Result should contain java version: ", results, hasItem(containsString("java version")));

    //result.forEach(LOG::info);

}

Результаты всегда пусты, хотя при запуске теста в eclipse команда запускается, а версия отображается в консоли.

IЯ просто немного экспериментирую с процессостроителем и процессом.Я видел в некоторых примерах чтение ответа в другой ветке, но это не имеет никакого значения.Это всегда терпит неудачу.Точно так же, если я включу вызовы в унаследовать и redirectErrorStream, это не имеет значения.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...