单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。如果我们写的代码依赖于某些模块对象,而单元测试过程中这些对象又很难手动创建,或者模块还没有开发完成,那么就使用一个虚拟的对象来完成单元测试,这就是所谓的 Mock。

Java 单元测试中比较流行的 Mock 测试框架有 jMockEasyMockMockito,但是这些 Mock 工具都不能 Mock staticfinalprivate 方法等,而 PowerMock 能够做到。

使用 PowerMock,首先需要使用 @RunWith(PowerMockRunner.class) 将测试用例的 Runner 改为 PowerMockRunner。如果要 Mock staticfinalprivate 等方法的时候,就需要加注解 @PrepareForTest

PowerMock 有两个版本,一个是基于 EasyMock 实现的,另一个是基于 Mockito 实现的。

下面我将以 PowerMock 的 Mockito 的版本来讲述如何使用 PowerMock。