单元测试如何PowerMockito私有方法
时间: 2023-07-16 11:14:57 浏览: 122
使用 PowerMockito 可以模拟私有方法的调用和测试,以下是一个简单的示例:
```java
public class MyClass {
private void privateMethod() {
// do something
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class MyClassTest {
@Test
public void testPrivateMethod() throws Exception {
MyClass myClass = new MyClass();
PowerMockito.spy(myClass);
PowerMockito.doNothing().when(myClass, "privateMethod");
// 调用私有方法
Method method = MyClass.class.getDeclaredMethod("privateMethod");
method.setAccessible(true);
method.invoke(myClass);
// 验证私有方法是否被调用
PowerMockito.verifyPrivate(myClass, times(1)).invoke("privateMethod");
}
}
```
上面的代码中使用 `PowerMockito.spy()` 方法来创建 `MyClass` 对象的 spy 对象,使用 `PowerMockito.doNothing()` 方法来预测私有方法调用时什么也不做,使用反射来调用私有方法,使用 `PowerMockito.verifyPrivate()` 方法来验证私有方法是否被调用。
需要注意的是,使用 PowerMockito 测试私有方法可能会影响代码的可读性和可维护性,因此应该尽可能避免在单元测试中使用私有方法。
阅读全文