powermockito 怎么mock初始化方法
时间: 2024-06-19 22:02:20 浏览: 202
PowerMockito 是一个 Java 单元测试框架,它扩展了 Mockito 和 EasyMock 框架,使得我们可以更方便地在单元测试中进行一些难以测试的代码,如静态方法、私有方法、final 类等等。在 PowerMockito 中 mock 初始化方法可以使用 whenNew() 方法来实现,具体步骤如下:
1. 使用 PowerMockito.mockStatic() 方法来 mock 静态类的方法
2. 使用 PowerMockito.whenNew() 方法来 mock 初始化类的方法,其中需要传入需要 mock 的类和 mock 后的实例对象
3. 在 whenNew() 方法中使用 PowerMockito.doNothing() 方法来 mock 初始化方法,使其什么也不做
下面是一个简单的示例代码:
```
// 静态类
public class StaticClass {
public static void staticMethod() {
System.out.println("Static method is called.");
}
}
// 初始化类
public class InitClass {
public void initMethod() {
StaticClass.staticMethod();
System.out.println("Init method is called.");
}
}
// 测试类
@RunWith(PowerMockRunner.class)
@PrepareForTest({StaticClass.class, InitClass.class})
public class TestClass {
@Test
public void testInitMethod() throws Exception {
// mock 静态类的方法
PowerMockito.mockStatic(StaticClass.class);
// mock 初始化类的方法
InitClass initObj = PowerMockito.mock(InitClass.class);
PowerMockito.whenNew(InitClass.class).withNoArguments().thenReturn(initObj);
PowerMockito.doNothing().when(initObj).initMethod();
// 执行初始化方法
new InitClass().initMethod();
// 验证静态方法是否被调用
PowerMockito.verifyStatic(Mockito.times(1));
StaticClass.staticMethod();
}
}
```
阅读全文