mockito-inline与powermock-api-mockito2结合使用bug(org.mockito.exceptions.base.MockitoException)集合
Mockito 3.4版本以后开始支持模拟静态方法,结合powermock-api-mockito2使用时,依赖引入顺序不当,会导致出现如下错误:
org.mockito.exceptions.base.MockitoException:
The used MockMaker PowerMockMaker does not support the creation of static mocks
Mockito's inline mock maker supports static mocks based on the Instrumentation API.
You can simply enable this mock mode, by placing the 'mockito-inline' artifact where you are currently using 'mockito-core'.
Note that Mockito's inline mock maker is not supported on Android.
如果引入的顺序颠倒,可能会导致以下问题:
- 冲突的类加载器:如果先引入powermock-api-mockito2,它可能会尝试加载自己的类加载器,与Mockito的类加载器冲突,导致类加载错误。
- MockMaker不兼容:当使用PowerMock进行测试时,如果先引入了PowerMock的相关库而没有引入mockito-inline,可能会导致MockMaker不兼容的问题。这是因为PowerMock默认使用自己的MockMaker,而不是Mockito的MockMaker。这可能导致模拟失败或出现其他意外的行为。
- 功能缺失:如果先引入了PowerMock的相关库而没有引入mockito-inline,可能会导致某些使用Mockito的功能在PowerMock测试中无法正常工作。例如,使用Mockito的注解和静态方法模拟功能可能无法正常工作。
综上所述,为了确保正常的测试和模拟行为,建议按照正确的顺序引入mockito-inline和powermock-api-mockito2库。正确的引入顺序应该是先引入mockito-inline,再引入powermock-api-mockito2。这样可以确保内联mock maker能够正确加载并支持PowerMock的功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构