养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

单元测试PowerMockito使用说明

时间:2024-10-15 20:22:37

单元测试是软件开发必不可少的一个环节,而PowerMockito因为其功能相对其他测试工具更加全面,所以是目前相对使用率较高的一款测试工具。在网上也有相关的一些使用说明,但是也基本上不是很全面,甚至其中也有蛮多的坑,经过实际操作之后,特此留下这篇文章供后来人参考,如有不符之处请斧正!

工具/原料

Java

PowerMockito

方法/步骤

1、Mock私有属性下面是给caltFeeInfo对象的validator属性赋值“属性值”,示例如下:CaltFeeInfocaltFeeInfo=newCaltFeeInfo();PowerMockito.field(CaltFeeInfo.class,"validator").set(caltFeeInfo,"属性值");

2、M艺皱麾酪ock私有方法示例:*不带参数CaltFeeInfocaltFeeInfo1=PowerMockito.spy(n髫潋啜缅ewCaltFeeInfo());PowerMockito.doReturn(“C1”).when(caltFeeInfo1,"getHeader");*带一个参数CaltFeeInfocaltFeeInfo1=PowerMockito.spy(newCaltFeeInfo());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构造方法示例:*被测代码:publicclassCaltFeeInfo{publicboolean惺绅寨瞀callInternalInstance(Stringpath){Filefile=newFile(path);returnfile.exists();}}测试代码:Filefile=PowerMockito.mock(File.class);CaltFeeInfocaltFeeInfo1=newCaltFeeInfo();PowerMockito.whenNew(File.class).withArguments("bbb").thenReturn(file);PowerMockito.when(file.exists()).thenReturn(true);assertTrue(caltFeeInfo1.callInternalInstance("bbb"));注意事项:当无参的构造方法与可变参构造方法同时存在时,不能使用withNoArguments()(报错的内容大概的意思就是不知道映射到哪个),应该使用withAnyArguments()原始方法示例:PublicCaltFeeInfo(){}PublicCaltFeeInfo(int...args){}

5、Mock普通方法+Mockfinal方法示例:CaltFeeInfocaltFeeInfo1=PowerMockito.mock(CaltFeeInfo.class);PowerMockito.when(caltFeeInfo1.isAlive()).thenReturn(true);

6、Mockvoid方法示例:CaltFeeInfocaltFeeInfo1=PowerMockito.mock(CaltFeeInfo.class);PowerMockito.doNothing().when(caltFeeInfo1.isAlive());

© 一点知识