天天看點

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項目進行測試。