У меня есть метод Java, который запускает процесс с ProcessBuilder и транслирует его вывод в массив байтов, а затем возвращает его массив байтов, когда процесс завершен.Как я могу протестировать метод Java, который использует ProcessBuilder и Process?
Псевдо-код:
ProcessBuilder b = new ProcessBuilder("my.exe")
Process p = b.start();
... // get output from process, close process
Что бы быть лучшим способом пойти о модульном тестировании этого метода? Я не нашел способ поиздеваться ProcessBuilder (это окончательный), даже с невероятно удивительным JMockit, это дает мне NoClassDefFoundError:
java.lang.NoClassDefFoundError: test/MockProcessBuilder
at java.lang.ProcessBuilder.<init>(ProcessBuilder.java)
at mypackage.MyProcess.start(ReportReaderWrapperImpl.java:97)
at test.MyProcessTest.testStart(ReportReaderWrapperImplTest.java:28)
Любые мысли?
Ответ - В соответствии с рекомендациями Олафа, я закончил рефакторинг этих строк к интерфейсу
Process start(String param) throws IOException;
теперь передать экземпляр этого интерфейса в класс я хотел проверить (в конструкторе), обычно используя реализацию по умолчанию с исходными строками. Когда я хочу протестировать, я просто использую макетную реализацию интерфейса. Работает как шарм, хотя я действительно задаюсь вопросом, не перепутал ли я здесь ...
Что делать, если вы не хотите, чтобы выполнить my.exe вообще? – 2015-05-28 20:07:38