mockito结合powermock模拟静态方法bug集合

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.

如果引入的顺序颠倒,可能会导致以下问题:

  1. 冲突的类加载器:如果先引入powermock-api-mockito2,它可能会尝试加载自己的类加载器,与Mockito的类加载器冲突,导致类加载错误。
  2. MockMaker不兼容:当使用PowerMock进行测试时,如果先引入了PowerMock的相关库而没有引入mockito-inline,可能会导致MockMaker不兼容的问题。这是因为PowerMock默认使用自己的MockMaker,而不是Mockito的MockMaker。这可能导致模拟失败或出现其他意外的行为。
  3. 功能缺失:如果先引入了PowerMock的相关库而没有引入mockito-inline,可能会导致某些使用Mockito的功能在PowerMock测试中无法正常工作。例如,使用Mockito的注解和静态方法模拟功能可能无法正常工作。

综上所述,为了确保正常的测试和模拟行为,建议按照正确的顺序引入mockito-inlinepowermock-api-mockito2库。正确的引入顺序应该是先引入mockito-inline,再引入powermock-api-mockito2。这样可以确保内联mock maker能够正确加载并支持PowerMock的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值