我有一個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