使用Mock进行单元测试

一、第一次做UT,有一些自己的小收获,记录下,顺便希望能够帮助到别人。

二、Mock
 mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法
  说白了,Mock就是可以给你制造任何你想要的对象,分层测试,你可以只测试controller或者service,而不需要牵扯到下层的调用,这样的话,测试就变得容易了。你可以Mock任何自己想要的资源。
假设你的接口,有500种不同的返回结果,你要制造这500种返回结果来提高覆盖率,那么你会累死在写UT上,但是,你可以Mock让它返回任意值,这样UT覆盖率就会像坐火箭一样,嗖嗖的上升,哈哈哈!!!

1、当你进行controller层的测试的时候,需要Mock掉service层,
例如:

@Mock
private RouteServiceImpl routeService;

然后,你可以返回自己设置的、想要的、任意的内容,list是我期望返回的内容,

when(routeService.selectByRouteId(any())).thenReturn(list);

2、当你进行service层的测试的时候,需要Mock掉Dao(Mapper)层,
例如:

@Mock
private RuleMapper ruleMapper;

任意的大于0的整数是我期望的返回内容,

when(ruleMapper.insertSelective(any())).thenReturn(1);

3、有try/catch的块,需要加

@Test(expected = RuntimeException.class)

写UT之后,感觉代码的编写,会很大程度影响测试的繁简情况。当然,如果你确实是TDD,可能就不需要这样的建议。
1、尽量少用if/else,尤其忌讳嵌套,否则,你的UT肯定会写一大堆,毕竟,要么if,要么else(废话)
2、if里的逻辑,少用&& ||,嵌套多了,分支多的会让你哭的
3、少用static方法,目前我还不会static方法的测试/::</::</::<
4、少用private方法,测试困难,关于私有方法,可以测试调用它的方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值