如何解决PowerMockito 升级后不会模拟私有方法,而是调用真正的方法
PowerMockito 在升级后不会模拟私有方法,而是调用真正的方法并抛出空指针异常,因为方法参数为空。 我使用的是 powermock-module-junit4:1.7.4,org.powermock:powermock-api-mockito2:1.7.4'。 org.powermock:powermock-api-mockito2:1.7.4 版本,在我的测试中我使用如下:
PowerMockito.when(myClass.class,"getPaymentBeans",ArgumentMatchers.any(),ArgumentMatchers.any()).thenThrow(new NullPointerException()).thenCallRealMethod();
但升级到 mockito-core' 后,版本:'3.7.7,org.powermock:powermock-api-mockito2:2.0.9 和 org.powermock:powermock-module-junit4:2.0.9。
它停止模拟私有方法,而是在方法调用上抛出 NullPointerException,因为方法的参数为空。
这是示例示例:
public class MyClass{
public ModelBean process(){
//some code
ModelBean[] result = getPaymentBeans(data[],new String[]{"test","test1"});
//some code
}
private static ModelBean[] getPaymentBeans(ModelBean[] data,String[] test){
//some code
return ModelBean[] result;
}
}
我的测试班
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*","javax.net.ssl.*","oracle.jdbc.*","javax.crypto.*","javax.security.*","sun.security.*","javax.*","org.xml.*"})
@PrepareForTest({MyClass.class})
public void testErrorAndValidate() throws Exception {
//some code
PowerMockito.mockStatic(MyClass.class);
PowerMockito.when(MyClass.class,ArgumentMatchers.any()).thenThrow(new NullPointerException()).thenCallRealMethod();
//some code
// some code for assertion
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。