Mock在单元测试的使用

作用:测试过程中获取一些不易获取的对象

1.被测对象依赖的对象构造复杂

对class A 进行单元测试,需要构造大量的classB,C,D等依赖对象,他们的构造复杂(构造步骤多,时间长), 这时我们可以利用mock去构造虚拟的classB,C,D

2.被测单元依赖的模块尚未开发完成,而被测对象需要依赖模块的返回值进行测试

for example:

--service层的代码中,包含对dao层的调用,但dao层代码尚未开发完成

 

使用时机:

只测试对象的内部逻辑的质量,不关心依赖对象的逻辑正确性和稳定性

 

Local Mock:对本地依赖对象的mock

EasyMock/Mockito

Mockito:

maven: <dependency> 
<groupId>org.mockito </groupId> 
<artifactId>mockito-core</artifactId> 
<version>2.7.12</version> 
<scope>test</scope> 
</dependency> 
导入包 import static org.mockito.Mockito.*;

特性:

1.验证行为是否调用过

Demo demo = mock(Demo.class);

demo.test();

verify(demo).test();//验证成功

2.验证方法被调用的情况

(1)调用了特定次数 verify(demo, times(2)).test();//demo的test是否被调用两次

(2)至少x次 verify(demo, atLeastOnce()).test();//demo的test至少调用一次

(3)最多x次 verify(demo, atMost(2)).test();//test最多被调用2次

(4)从未被调用 verify(demo, never()).test();

3.插桩

使mock对象的的方法返回期望的返回值:when(a.b()).thenReturn();

抛出期望的异常:doThorw(new Exception()).when(Demo).test();

4.参数匹配

使用arguments metcher(参数匹配)

任意整数:anyInt() 任意字符串:anyString() ...

 

@Mock:mockito.mock()的缩写

@MockBean:将mock对象添加到spring上下文中,替换spring中任何相同类型的bean,如果没有相同类型的bean将添加一个新的bean

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值