Я запускаю простой модульный тест для вывода версии 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, это не имеет значения.
Спасибо.