只用mockito 不用PowerMockito 可以达到么?
时间: 2024-04-23 08:25:33 浏览: 119
基于Mockito和PowerMockito的Java单元测试指南.zip
使用 Mockito 框架本身是无法直接 Mock 私有方法的。Mockito 框架的主要目的是模拟对象的行为,而不是模拟对象的状态或内部实现。
但是,我们可以使用 Mockito 提供的 `@InjectMocks` 和 `@Spy` 注解来测试私有方法,如下所示:
```java
public class MyClass {
private String getPrivateValue() {
return "Private Value";
}
}
public class MyClassTest {
@InjectMocks
private MyClass myClass;
@Spy
private MyClass spyClass;
@Test
public void testGetPrivateValue() throws Exception {
doReturn("Mocked Value").when(spyClass).getPrivateValue();
String result = spyClass.getPrivateValue();
assertEquals("Mocked Value", result);
}
}
```
在这个示例中,我们使用了 `@InjectMocks` 注解来创建 `MyClass` 的实例,并将其注入到测试类中。接着,我们使用了 `@Spy` 注解来创建一个 `MyClass` 的 Spy 对象,并使用 `doReturn` 方法来模拟私有方法的返回值。
需要注意的是,这种方法也有其限制,因为它只能 Mock 部分私有方法,而无法 Mock 私有构造函数等方法。因此,如果需要 Mock 的私有方法较多或者需要 Mock 私有构造函数等方法,建议使用 PowerMockito 扩展来实现。
阅读全文