jmockit mock 私有方法
时间: 2023-09-13 18:12:35 浏览: 159
JMockit可以mock私有方法,下面是一个简单的示例:
```java
public class PrivateMethodExample {
private String privateMethod() {
return "Real private method";
}
}
@RunWith(JMockit.class)
public class PrivateMethodExampleTest {
@Test
public void testPrivateMethod(@Mocked PrivateMethodExample example) throws Exception {
new Expectations() {{
Deencapsulation.invoke(example, "privateMethod");
result = "Mocked private method";
}};
PrivateMethodExample target = new PrivateMethodExample();
String result = Deencapsulation.invoke(target, "privateMethod");
assertEquals("Mocked private method", result);
}
}
```
在上面的测试代码中,使用了JMockit的`@Mocked`注解来mock私有方法所在的类`PrivateMethodExample`,然后使用`Deencapsulation.invoke()`来调用被mock的私有方法,从而达到mock私有方法的目的。
需要注意的是,在mock私有方法时,需要使用`Deencapsulation.invoke()`方法来调用私有方法,而不能直接通过实例对象调用私有方法。此外,还需要在测试类中添加`@RunWith(JMockit.class)`注解。
阅读全文