关于mockito的初步学习和总结

传送门:

mockito的入门与使用https://blog.csdn.net/qq_36804701/article/details/80475540


我们的主管长期以来一直强调要做单元测试,我从前期的不愿不解到,从网上的各种信息稍微理解并认识到了单元测试的必要性和重要性,似乎是大公司规范的地方之一。根据我的理解,测试就是大型产品完善的必要环节,大公司要花费好几个月时间进行大量的全方位的测试。所以虽然单元测试看似要花费额外的时间写不必要的代码,但是我应该要正视并努力地理解。实际上测试已经给我带来了好处,他让我能够局部地测试写好的代码能否运行而不必重启整个项目,提高了效率,而花费时间写好单元测试以后(实际上还是很不规范的,只是按照自己的理解写的),我能够全局地测试代码中的问题,并且在改动代码以后能够快速测试其对前后业务流程的影响,迅速找出问题。前期花费大量时间搭建框架,使工作自动地进行,从而在后期更加省力和有效率地工作,这是我对程序员的理解,也符合我intp的天性,只不过我依然没有更深地体会到单元测试的好处,因为实际上我还没有深入地实践(也就是写的代码还不够多)。现在主管让我们使用mockito来写单元测试,并且推荐了我们汪文君的视频,除了他的视频外我还会在网上找些额外的资料,下面是对这些内容的分析和总结。

我初步的理解是,代码运行是需要环境的,但是测试代码很多时候并不能满足这种条件,比如第三方的接口或者是数据库,或者是那段代码根本还没有写,(我之前一直不知道怎么测试spring-mvc的代码,因为涉及到注入,每次都要重启项目,直到我发现mockmvc,还有其他的mock工具),因此mock,中文意思是模拟,就应运而生了,他可以模拟代码中方法类的行为,例如使用Mockito.when(testDao.test("aaa")).thenReturn("aaa")来模拟testDao方法输入"aaa"参数时返回"aaa",然后注入到控制层controller或者业务层service中,代码运行到那一段就会执行mock制定的行为,这是相当有用的。虽然没有看过源代码,但是我想原理跟动态代理很像,动态代理之前我看过博客的原理分析,实际上是动态生成了继承被代理类的实现类,并且用反射来调用被代理类的方法和动态代理中的切面方法。初步猜测mockito应该与之类似。不过通过汪文君的视频我了解到mock不能模拟最终finial,私有private,静态static,匿名anonymous,原始primivite方法。其中不能模拟私有方法和静态我认为还是挺致命的缺陷,不过视频中也提到powarmock可以实现,所以一般和mockito配合使用。这是初步的认识。

后面我会具体介绍使用mockito的过程。

完。

猜你喜欢

转载自blog.csdn.net/qq_36804701/article/details/80475058
今日推荐