什么是单元测试
摘自维基百科的解释:单元测试
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
可以看到,对于Java这种面向对象的语言来说,单元测试就是对一个类的行为进行测试,通俗来说,每个方法都有入参和返回值,输入不同的参数会得到不同的返回值,或者异常;那么单元测试就是根据不同的use case来模拟不同场景执行,验证我们的代码在不同的执行路径下,是否会返回预期的结果。
mockito
在日常工作中,我们基本都会基于spring这种容器框架来做开发,并且大部分情况下,项目都会依赖外部系统,比如DB、分布式缓存、第三方接口等。那么我们在针对某个类进行单元测试的时候,就会遇到各种困难:操作DB造成脏数据、第三方接口测试环境不可达等等。这时候,我们就需要一种方式屏蔽这些依赖组件对测试的影响,mockito就是这样一种mock工具,帮我们解决上述这些问题,当然类似的工具还有easymock、powermock、基于groovy的Spock等。
举个例子
话不多数,上代码,假设我们有一个基于spring-boot的web项目,代码结构如下:
我们针对业务层(biz) UserBiz类生成一个单元测试类,使用Junit4作为单元测试框架,mockito作为mock框架: