我们在写单元测试的时候,面临的一个挑战就是要测试的内容总是依赖于其他组件,要是我们还得先配置好其他组件,未免有点不如意,那么我们可以使用Mocks来代替那些依赖的组件

本文问了展示这个过程,我会创建一个DAL,数据访问层,这是一个类,提供了一个通用的api来访问和修改数据仓库的数据,然后,我们要测试这个api,而不用配置连接某个本地的数据库,,或者一个远程的数据库,或者是一个文件系统,反正就是任何放数据的东西,DAL层的好处就是隔离开了数据访问和应用程序代码

首先使用maven来创建一个工程

执行之后,本地生成MockitoDemo 文件夹,然后整个工程的目录结构与生成好了。

然后,我们写这样一个model类,表示book类型

然后,我们访问Book model的DAL类会如下

DAL层现在还没啥功能,我们要通过TDD来测试,实际中,DAL可能和ORM来交互,也可能和数据库API交互,但是我们设计DAL的时候,不用关心

准备测试

我倾向于用junit做单元测试,而Mockito做mock。首先更新一下pom文件。添加依赖

下面,我们要测试啦,我们会在单元测试中把mock数据注入到BookDAL中,这样我们就不要依赖任何数据源就可以完成测试

我们当然对应测试DAL类的每个方法嘛。

然后我们会在setup(这个方法是在测试类执行测试前执行的,用于准备数据啦)

在setup()方法中

1.首先我创建BookDAL的对象

2.然后stub,存根。。用mock的数据。这样当对应的方法被调用的时候就返回我mock的数据

然后,我们执行一下

mvn test就可以看到结果了

 

 

 

很简单。。。没有配置任何实际的数据源。