1、Mock私有属性下面是给caltFeeInfo对象的validator属性赋值“属性值”,示例如下:CaltFeeInfo caltFeeInfo = new CaltFeeInfo();PowerMockito.field(CaltFeeInfo.class, "validator").set(caltFeeInfo, "属性值");
2、Mock私有方法示例:* 不带参数CaltFeeInfo caltFeeInfo1 = PowerMockito.spy(n髫潋啜缅ew CaltFeeInfo());PowerMockito.doReturn(“C1”).when(caltFeeInfo1, "getHeader");* 带一个参数CaltFeeInfo caltFeeInfo1 = PowerMockito.spy(new CaltFeeInfo());PowerMockito.doReturn(“C1”).when(caltFeeInfo1, "getCaltFeeInfo",Mockito.anyString());说明:先spy一个真实对象caltFeeInfo1,然后mock私有方法getCaltFeeInfo返回C1。注意事项: 1.使用下面这种方式mock私有方法,经过测试是不生效的,依然会执行方法内部程序。 PowerMockito.when(caltFeeInfo1, "getContactId").thenReturn("C1"); 2.带有参数的私有方法,如果实际执行这个私有方法传递的参数与mock时设置的参数不一致,那么mock私有方法依然不生效,会执行内部程序。
3、 Mock静态方法示例: PowerMockito.mockStatic(HttpPostRequestUtil.class); PowerMockito.when(HttpPostRequestUtil.getContactId(Mockito.anyString())).thenReturn("C1");说明: 将HttpPostRequestUtil类的getContactId方法进行mock,无论传递的是什么String参数都将返回“C1”
4、Moc氯短赤亻k构造方法示例:* 被测代码:public class CaltFeeInfo {public boolean callInternalInstance(String path) {Filefile= newFile(path);return file.exists(); }}测试代码:File file = PowerMockito.mock(File.class);CaltFeeInfo caltFeeInfo1= new CaltFeeInfo();PowerMockito.whenNew(File.class).withArguments("bbb").thenReturn(file);PowerMockito.when(file.exists()).thenReturn(true);assertTrue(caltFeeInfo1.callInternalInstance("bbb"));注意事项:当无参的构造方法与可变参构造方法同时存在时,不能使用withNoArguments()(报错的内容大概的意思就是不知道映射到哪个),应该使用withAnyArguments()原始方法示例:Public CaltFeeInfo (){}Public CaltFeeInfo (int ... args){}
5、 Mock普通方法 + Mock final方法示例:CaltFeeInfo caltFeeInfo1 = PowerMockito.mock(CaltFeeInfo .class);PowerMockito.when(caltFeeInfo1.isAlive()).thenReturn(true);
6、 Mock void方法示例:CaltFeeInfo caltFeeInfo1 = PowerMockito.mock(CaltFeeInfo .class);PowerMockito.doNothing().when(caltFeeInfo1.isAlive());