java - Powermock 和 FileUtils 包

标签 java junit mockito powermock

我们可以使用 PowerMock 模拟 FileUtils 包的静态方法吗?我有一个要求,我的业务代码调用 FileUtils 包的 copyFileToURL(url,file) ,并且对于单元测试,我必须使用 Powermock 来模拟它,这会给出未完成的 stub 异常。

此链接org.mockito.exceptions.misusing.UnfinishedStubbingException Unfinished stubbing detected ,建议我们不能mock这些文件utils所属的java.lang包的类?我不想围绕这个类创建包装器。还有其他办法吗?

最佳答案

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

I cannot mock classes in from java.lang, java.net, java.io or other system classes, why?

但您打算使用 Apache Commons FileUtil 类 method .

从这个意义上说:您想要模拟静态的“公共(public)或花园”方法。

如果这不起作用:你就做错了。所以,简单的答案:阅读他们的 documentation再次;并检查您的代码哪里有偏差。

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

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

关于java - Powermock 和 FileUtils 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43344893/

相关文章:

spring - 使用 Mockito 和 Spring MockMVC 在模拟中 stub 两个方法会抛出异常

java - 如何修复 "money sorter"java程序

java - 制作适用于不同对象类型的功能接口(interface)

java - 使 SWT 标签不继承 shell 的 Alpha

jsf - 使用 PowerMock 分析 JUnit 测试?

java - 如何在 Maven 中将测试用例作为单独的 Java 进程运行

android - 即使使用 Mockito 在 Android 中通过单元测试,也总是会出现线程错误

java - 在 Spring 中读取 2 个具有相同变量名的属性文件

junit - 将 HTML 添加到 JUnit 报告

unit-testing - JSON 路径没有值