mic*_*mit 10 java unit-testing file mocking
有没有人有java模拟File对象的建议?我使用的是需要获取java.io.File对象作为参数的第三方类.我通过webservice(也是他们的产品之一)在流中接收此文件的数据.
一种解决方案是将所有这些数据写入文件并将其提供给类.这是一个我不喜欢的解决方案:它消除了使用Web服务而不是仅下载文件的优势.
更快更有效的方法是将这些数据从内存中放入Mock文件中,并将此Mock文件提供给第三方类.
它可能必须是一个扩展java.io.File的MockFile,并覆盖与硬盘上的文件实际连接的所有函数.
我知道第三方应该使用流作为输入参数而不是文件.但是,这超出了我的影响范围.
这只是基于我对您的问题的理解的建议.我相信,你必须做这样的事情,
public void doSomething(){
//Pre processing
Object result=new ThirdPartyCode().actualMethod(file);
//Post processing
}
Run Code Online (Sandbox Code Playgroud)
从单元测试的角度来看,模拟对象更有意义.你的目标不是单元测试第三方库函数.它是单元测试doSomething()方法.所以可能你可以围绕第三方功能创建一个包装器.可能是这样的,
public class Wrapper implements MyWrapper{
public Object invokeThirdPartyFunction(File file){
new ThirdPartyCode().actualMethod(file);
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以创建一个模拟包装器(实现相同的接口)并对所有junit情况使用这个模拟包装器.