系列文章
《单元测试—— Spring 环境下测试之 SpringJUnit4ClassRunner》
Mockito 这个测试工具已在前面的文章写道,它能够 Mock 对象的行为,模拟测试对象的依赖,基本上能够满足大多数的单元测试。但是 Mockito 不可以实现对静态函数、构造函数、私有函数、Final 函数以及系统函数的模拟,因此 PowerMock 在 EasyMock 以及 Mockito 基础上的继续扩展,通过定制类加载器等技术,PowerMock 实现了之前提到的所有模拟功能,使其成为大型系统上单元测试中的必备工具 。
《使用 PowerMock 以及 Mockito 实现单元测试》这边文章已经详细讲解了对 PowerMock 的使用,这里简单的罗列以下 PowerMock 的一些功能:
1, 模拟 Static 方法
2, 模拟构造函数
3, 模拟私有以及 Final 方法
4, 局部模拟
PowerMock 的功能很强大,同时它也支持 Mockito。因此使用 PowerMock 基本上可以满足所有的测试。因为它的强大,那么是不是所有的单元测试用 PowerMock 就好了呢?
然而,在实践中,并不是这样的。在敏捷开发的模式中,单元测试就是一份完整的需求和设计文档,敏捷开发模式也要求用最简单的代码完成功能。单元测试不必太过复杂,书写复杂的单元测试的代价,一定比重构的代价大得多。在大多数情况下,重构是可以代替复杂的单元测试的。