我正在从我目前正在处理的项目中删除 Powermock,因此我试图仅使用 Mockito (mockito-core-2.2.28) 重写一些现有的单一测试。
当我运行测试时,出现以下错误:
org.mockito.exceptions.base.MockitoException:
不能模拟/间谍类 com.ExternalpackagePath.Externalclass
Mockito 不能模拟/间谍因为:
- 最后一堂课
我知道已经有人问过这个问题( How to mock a final class with mockito , Mock objects calling final classes static methods with Mockito ),但我没有找到我正在寻找的答案。
这是我的代码的摘录:
public class MyClassToTest extends TestCase {
private MyClass myClass;
@Mock private Externalclass ext; // This class is final, I would like to mock it
@Override
protected void setUp() throws Exception {
MockitoAnnotations.initMocks(this); // <<<< The exception is thrown here
ext = Mockito.mock(Externalclass.class);
}
}
如 Mockito 文档中所述( https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2,§Mock the unmockable),我添加了 org.mockito.plugins.MockMaker 文件.这是我的项目的树:
- 项目
- 来源
- com.packagePath.myPackage
- 我的课
- com.packagePath.myPackage
- 测试
- com.packagePath.myPackage
- myClassToTest
- 资源
- 模拟扩展
- org.mockito.plugins.MockMaker
- com.packagePath.myPackage
- 来源
我也尝试将“resources”目录放在“src”中,在一个名为“test”的子目录中,但结果仍然相同。
我认为使用 Mockito v2 可以模拟决赛。有人知道这里缺少什么吗?
谢谢!
原文由 Ptiseb 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我发现这里出了什么问题,它可能对其他人有用。我的项目树是错误的,我将 org.mockito.plugins.MockMaker 直接放在“src”中的目录“mockito-extension”中。现在这是我的树: