单元测试powermockito
时间: 2023-07-10 07:15:33 浏览: 43
PowerMockito 是 Mockito 和 PowerMock 的结合,它扩展了 Mockito 的功能,使其可以模拟静态方法、私有方法、构造方法等。在单元测试中,使用 PowerMockito 可以轻松地模拟这些方法,从而提高测试覆盖率和代码质量。
以下是 PowerMockito 的基本用法:
1. 静态方法模拟
```java
// 假设有一个静态方法 public static int add(int a, int b)
PowerMockito.mockStatic(Calculator.class); // mock 静态方法所在的类
PowerMockito.when(Calculator.add(1, 2)).thenReturn(3); // 设置静态方法的返回值
int result = Calculator.add(1, 2); // 调用静态方法
assertEquals(3, result); // 断言结果是否正确
```
2. 私有方法模拟
```java
// 假设有一个私有方法 private int add(int a, int b)
Calculator calculator = PowerMockito.spy(new Calculator()); // spy 要测试的对象
PowerMockito.doReturn(3).when(calculator, "add", 1, 2); // 设置私有方法的返回值
int result = Whitebox.invokeMethod(calculator, "add", 1, 2); // 调用私有方法
assertEquals(3, result); // 断言结果是否正确
```
3. 构造方法模拟
```java
// 假设有一个构造方法 public Calculator(int a, int b)
PowerMockito.whenNew(Calculator.class).withArguments(1, 2).thenReturn(mockCalculator); // mock 构造方法并设置返回值
Calculator calculator = new Calculator(1, 2); // 实例化对象
assertEquals(mockCalculator, calculator); // 断言实例化的对象是否正确
```
以上是 PowerMockito 的基本用法,需要注意的是,PowerMockito 的使用应该谨慎,过度使用会使代码变得复杂,建议在需要模拟静态方法、私有方法、构造方法等特殊场景下使用。