powermock如何模拟静态类中的私有方法
时间: 2024-03-09 08:46:08 浏览: 68
要使用PowerMock模拟静态类中的私有方法,您需要遵循以下步骤:
1. 为PowerMock和JUnit添加依赖项
2. 使用@RunWith(PowerMockRunner.class)注释测试类
3. 使用@PrepareForTest注释测试类,指定需要模拟的类
4. 使用PowerMockito.spy()方法创建一个Spied对象
5. 使用PowerMockito.doReturn()方法设置模拟方法的返回值
6. 使用PowerMockito.when()方法设置私有方法的模拟
以下是一个示例代码:
```java
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticClass.class)
public class StaticClassTest {
@Test
public void testPrivateMethod() throws Exception {
PowerMockito.spy(StaticClass.class);
PowerMockito.doReturn("Mocked Value").when(StaticClass.class, "privateMethod");
StaticClass myClass = new StaticClass();
String result = myClass.publicMethod();
assertEquals("Mocked Value", result);
}
}
class StaticClass {
public String publicMethod() {
return privateMethod();
}
private String privateMethod() {
return "Original Value";
}
}
```
在此示例中,我们使用PowerMockito.spy()方法创建StaticClass的Spied对象。然后,我们使用PowerMockito.doReturn()方法设置私有方法的模拟方法返回值。最后,我们使用assertEquals()方法验证返回值是否与模拟值相同。
阅读全文