天天看点

Mocking的概念及常见Mocking框架概述

在单元测试中,测试一个对象的API往往需要依赖其他对象构成的环境。例如,测试对象是A,但是A的正常工作需要对象B, C提供支持。而对象B, C的初始化又有一个复杂的过程。Mocking为单元测试提供了一个方案,直接设置模拟的对象B, C,在测试对象A时使用模拟出来的对象B, C。

这些被模拟出来的对象B, C就被称为Mocking对象,Mocking对象的行为是在单元测试中人为设定的且符合预期。

常见的Mocking框架有EasyMock、Mockito、PowerMock和JMockit。

  • EasyMock最早出现,设计最严谨,但是使用也最不方便。
  • Mockito去掉了EasyMock的部分概念,使用方便。
  • EasyMock和Mockito的功能都有局限,要支持对构造函数, static方法, final方法, private方法的的Mock,还必须借助于PowerMock。当然,PowerMock也离不开EasyMock和Mockito。所以,最常用的是Mockito和PowerMock的组合。但是即使如此,对final类的Mock目前仍然束手无策,还需要等待Mockito 2的支持。
  • JMockit能够不借助于容器对JavaEE项目进行测试。