![7c5b494cc491cf5842434e88d12f00ec.png](https://img-blog.csdnimg.cn/img_convert/7c5b494cc491cf5842434e88d12f00ec.png)
单元测试
在日常的开发工作中,我们总是要经历一系列流程,大致可以总结成这样的一个流程:前期需求梳理,架构设计,编码,测试,项目正式上线等。然而,测试在整个流程中处于一个非常重要的环节,它直接关系到项目是否成功,是否满足干系人的需求,是否能够达到预期的商业价值。
测试在整个软件行业又可以分为很多种测试:
- 单元测试(Unit Testing)
- 集成测试(Integration Testing)
- 系统测试(System Testing)
- 验收测试(Acceptance Testing)
单元测试是最基础也是最重要的一种测试,它主要在程序员编码完成后用于检验程序的逻辑是否符合预期的效果,通过单元测试我们很容易判断我们的程序逻辑是否正确,它主要是对程序的一个一个函数进行测试。
同时,通过单元测试也可以检验我们编写的程序结构是否合理,可读性是否强。也就是当别人拿到我们的这一份代码的时候,是否可以很容易读懂程序想要实现的功能,以及实现该功能的逻辑是否清晰,条理是否明确。当我们的单元测试没办法编写或者很难编写的时候,这个时候我们就需要对我们编写的程序进行重构了,重构的过程就是将程序代码进行解耦,使整个程序代码的设计条理清晰,增强代码的逻辑可读性。
编写单元测试的时候,还有一种情况我们可能也需要考虑到,也可能不止下面两点:
- 跟数据库有关的单元测试如何编写,我们不希望在数据库中写入很多没用的数据;
- 跟外部接口有关的单元测试如何编写,我们希望当外部接口不可用的时候,我们的程序逻辑还能够符合我们预期的效果;
这个时候我们可能需要考虑一种技术就是Mock,百度百科对它是这样说的:
mock测试对象
这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。
mock测试对象使用范畴
真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报)真实对象很难被创建的 真实对象的某些行为很难被触发真实对象实际上还不存在的(和其他开发小组或者和新的硬件打交道)等等。
也就是我们可以把单元测试中的操作数据库函数,以及发送外部请求的函数进行Mock掉,通过Mock这些操作返回几种我们预期的结果,然后进行后续程序的逻辑校验。通过这些假设的结果来验证我们程序功能是否完善。
![10e75317ed1ac0e5f62dd39f2ac957d6.png](https://img-blog.csdnimg.cn/img_convert/10e75317ed1ac0e5f62dd39f2ac957d6.png)
单元测试
下面我们通过一个简单的demo来看看如何使用Mock技术来编写我们的单元测试。demo我在文章底部附上分享地址。
新建SpringBoot工程
项目就叫junit-demo,其中maven的依赖如下:
<?xml ver