powermock怎么阻碍super.方法执行
时间: 2024-09-15 22:09:52 浏览: 36
powermock-cover.zip
PowerMock是一个用于单元测试的框架,它可以扩展Mockito和EasyMock等现有的Mock框架的功能,以便能够在测试中模拟静态方法、私有方法、构造函数、final类和方法等。使用PowerMock时,可以通过模拟(mock)和存根(stubbing)来控制超类方法(super方法)的执行。
如果你想阻碍(即防止调用)超类中的方法执行,可以使用PowerMock提供的注解和方法来达到目的。在测试类上使用`@PrepareForTest`注解,将包含你想要模拟的超类或者类。接着,可以使用PowerMock提供的静态方法`PowerMock.mockStatic()`来模拟整个类(包括其静态方法和超类方法)或者使用`@Mock`注解配合`when()`和`doAnswer()`等Mockito的方法来模拟特定的超类方法。
以下是一个简单的例子来演示如何阻碍超类方法的执行:
```java
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({SuperClass.class})
public class MyTest {
@Test
public void testMethod() throws Exception {
// 阻碍超类SuperClass中的某个方法
PowerMockito.mockStatic(SuperClass.class);
PowerMockito.doNothing().when(SuperClass.class, "superMethodName");
// 执行待测试的方法,此时SuperClass的superMethodName不会被调用
// ...
// 验证superMethodName没有被调用
PowerMockito.verifyStatic(SuperClass.class, never());
SuperClass.superMethodName();
}
}
```
在上述代码中,`SuperClass`是包含我们要阻碍执行的超类方法`superMethodName`的类。通过`PowerMockito.doNothing().when(SuperClass.class, "superMethodName")`我们设置了一个规则,当`SuperClass`的`superMethodName`被调用时什么也不做,即阻碍了该方法的执行。然后在测试断言中使用`verifyStatic`来检查该方法是否被调用。
阅读全文