Mockito学习笔记
Mockito学习笔记
1 - 介绍
Mockito的介绍,以及Mockito的资料收集
1.1 - Mockito介绍
Mockito介绍
Mockito 是一个非常美味的模拟框架。它能让您使用简洁的 API 编写精美的测试。Mockito 不会让你感到宿醉,因为测试非常易读,而且会产生干净的验证错误。
单元测试和mock
单元测试是与单个类的单个职责相关的测试,通常称为被测系统(SUT)。单元测试的目的是验证 SUT 中的代码是否能正常工作。被测试对象通常会与其他对象(称为协作者)对话。需要创建这些协作者,以便在测试中将被测试对象分配给它们。为了简化单元测试并控制执行上下文的所有方面,可以用称为测试替身(test doubles)的假替身来替换真正的合作对象。它们看起来和原物一样,但与其他对象没有任何依赖关系。测试替身也可以很容易地按照特定的期望进行编程,例如记录它们之间的任何互动。
为了更清楚地说明这一点,请试着想象一个典型的企业系统的代码。现在,这里有一个带有一些逻辑的服务,它需要两个类来履行其职责。这两个类还需要其他一些类。其中一个类可能是 DAO,需要访问数据库,而另一个需要消息队列。创建这种层次结构并提供所需的资源将是一项相当大的工作。在运行此类测试时还可能出现问题,例如启动时间过长或无法同时测试多个开发人员站。不过,使用 Mocks,同样的测试可以更简洁、更快速。
测试替身可分为几组1 :
- 虚拟(Dummy):在调用中传递的空对象(通常只是为了满足编译器对方法参数的要求)
- 假对象(Fake):具有功能实现的对象,但通常是简化形式,只是为了满足测试需要(如内存数据库)
- 存根(Stub):具有适合特定测试(或一组测试)的硬编码行为的对象
- 模拟(Mock):具有以下能力的对象:a)具有编程的预期行为;b)验证在其生命周期内发生的交互(该对象通常在模拟框架的帮助下创建)
- 间谍(spy):作为现有真实对象的代理而创建的模拟;某些方法可以被存根化,而未存根化的方法则转发给被覆盖的对象
Mockito 是一个模拟(mocking)框架,有助于以简单直观的方式创建 mock 和 spy,同时还能对整个过程进行很好的控制。
注意内容
记住:
- 不要模拟您不拥有的类型
- 不要模拟值对象
- 不要模拟所有对象
- 在测试中表达爱意
2 - mock
Mockito中mock的使用
2.1 - 创建mock对象
创建mock对象的多种方式
3 - spy
Mockito中spy的使用