我有一个Java方法,用ProcessBuilder启动一个Process,并将其输出管道输入到一个字节数组中,然后在该过程完成时返回它的字节数组。如何对使用ProcessBuilder和Process的Java方法进行单元测试?
伪代码:
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