PowerMock简介
PowerMock是一个框架,它以更强大的功能扩展了其他模拟库,例如EasyMock。PowerMock使用自定义的类加载器和字节码操作来模拟静态方法,构造函数, 最终类和方法,私有方法,删除静态初始化程序等。通过使用自定义类加载器,无需对IDE或持续集成服务器进行任何更改,从而简化了采用过程。
使用PowerMock目的
降低外部依赖对被测试代码的影响
PowerMock常用注释
@RunWith(PowerMockRunner.class)
告诉JUnit使用PowerMockRunner进行测试
@PrepareForTest({DemoDao.class})
告诉Powermock所有需要测试的类,适用于有final, private, static, native方法的类
@PowerMockIgnore({“javax.management.", "javax.net.ssl.”})
为了解决使用powermock后,提示classloader错误
@SuppressStaticInitializationFor
不让静态代码加载
其他注解参考:PowerMock
PowerMock常用场景
mock 普通方法
Demo demo = PowerMockito.mock(Demo.class);
PowerMockito.when(demo.method(withArgument)).thenReturn(demo);
mock Static 方法
@RunWith(PowerMockRunner.class)
@PrepareForTest({Demo.class})
PowerMokito.MockStatic(Demo.class);
PowerMockito.when(Demo.staticMethod(withArgument)).thenReturn();
mock 构造方法
Demo demo = PowerMockito.mock(Demo.class);
PowerMokito.whenNew((Demo.class).withNoArguments().thenReturn(demo);