Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Powermock和FileUtils包_Java_Junit_Mockito_Powermock - Fatal编程技术网

Java Powermock和FileUtils包

Java Powermock和FileUtils包,java,junit,mockito,powermock,Java,Junit,Mockito,Powermock,我们可以使用PowerMock模拟FileUtils包的静态方法吗?我有一个要求,即我的业务代码调用FileUtils包的copyFileToURL(url,file),对于单元测试,我必须使用Powermock对其进行模拟,这会产生未完成的存根异常 通过此链接,建议我们不能模拟这些文件util所属的java.lang包的类?我不想围绕这个类创建包装器。还有别的办法吗 仔细阅读该链接问题时,您会发现: 我无法模拟java.lang、java.net、java.io或其他系统类中的类,为什么 但是

我们可以使用PowerMock模拟FileUtils包的静态方法吗?我有一个要求,即我的业务代码调用FileUtils包的copyFileToURL(url,file),对于单元测试,我必须使用Powermock对其进行模拟,这会产生未完成的存根异常


通过此链接,建议我们不能模拟这些文件util所属的java.lang包的类?我不想围绕这个类创建包装器。还有别的办法吗

仔细阅读该链接问题时,您会发现:

我无法模拟java.lang、java.net、java.io或其他系统类中的类,为什么

但是您打算使用ApacheCommonsFileUtil类

从这个意义上说:您想要模拟一个静态的“commons或garden”方法

如果这不起作用:你做错了。所以,简单的回答是:再读一遍他们的文章;并检查代码偏离的位置

但除此之外:使用静态总是意味着:因为它导致生产代码的紧密耦合;你失去了多态性的优势。这意味着:您在可以使用的模拟框架中受到限制(因为只有PowerMock或JMockit支持静态模拟)


因此,我的真正答案是:花了这几行代码,围绕静态方法构建了一个包装器;并且不再需要模拟静态调用。

谢谢您的帮助,我找到了解决方案。