powermockito 静态void方法
时间: 2023-06-05 09:47:11 浏览: 1572
PowerMockito 是一个用于模拟静态方法、私有方法、构造函数、新实例等的工具库,其中包含了用于模拟静态 void 方法的能力。使用 PowerMockito 模拟静态 void 方法需要在测试类上使用 @PrepareForTest 注解并且使用 PowerMockito.mockStatic(...) 方法来模拟静态类。然后,可以使用 PowerMockito.doNothing().when(...).静态方法名() 来设置 void 方法在调用时什么都不做。
相关问题
powermockito模拟静态void方法
使用 PowerMockito 模拟静态 void 方法可以分为以下几个步骤:
1. 添加 PowerMockito 的依赖库,例如:
```
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
```
2. 使用 `@RunWith(PowerMockRunner.class)` 注解指定使用 PowerMockRunner 进行单元测试。
3. 使用 `@PrepareForTest` 注解指定需要被 mock 的类或者接口。
4. 使用 `PowerMockito.mockStatic()` 方法来 mock 静态方法。
5. 使用 `PowerMockito.doNothing()` 方法来指定静态 void 方法的行为。
下面是一个示例:
```
@RunWith(PowerMockRunner.class)
@PrepareForTest({StaticClass.class})
public class StaticClassTest {
@Test
public void testStaticMethod() {
PowerMockito.mockStatic(StaticClass.class);
PowerMockito.doNothing().when(StaticClass.class);
StaticClass.staticVoidMethod();
// 调用被 mock 的静态 void 方法
StaticClass.staticVoidMethod();
// 验证静态 void 方法被调用了两次
PowerMockito.verifyStatic(Mockito.times(2));
StaticClass.staticVoidMethod();
}
}
```
注意,这里使用了 `Mockito.times(2)` 来验证静态 void 方法被调用了两次。同时,为了避免与其他测试类的影响,建议在每个测试方法中都重新 mock 一次。
powermockito静态方法
PowerMockito是一个基于Mockito的扩展框架,可以用于测试静态方法、私有方法、构造函数、final方法等无法使用Mockito测试的代码。
要测试静态方法,可以使用PowerMockito.mockStatic()方法来模拟静态方法的行为。以下是一个示例:
```java
@RunWith(PowerMockRunner.class)
@PrepareForTest(YourClassWithStaticMethod.class)
public class YourTestClass {
@Test
public void testYourStaticMethod() throws Exception {
// 模拟静态方法的返回值
PowerMockito.mockStatic(YourClassWithStaticMethod.class);
when(YourClassWithStaticMethod.yourStaticMethod()).thenReturn("mocked value");
// 调用被测试的方法
YourClassWithStaticMethod yourClass = new YourClassWithStaticMethod();
String result = yourClass.methodThatCallsStaticMethod();
// 验证结果
assertEquals("mocked value", result);
}
}
```
在这个示例中,我们使用了PowerMockito.mockStatic()方法来模拟YourClassWithStaticMethod类中的静态方法yourStaticMethod()的行为。然后,我们调用了被测试的方法methodThatCallsStaticMethod(),并验证了返回值是否正确。
需要注意的是,在测试静态方法时,需要在测试类上加上@RunWith(PowerMockRunner.class)注解,并使用@PrepareForTest注解来指定需要被mock的类。同时,还需要在pom.xml中添加PowerMock和PowerMockito的依赖。
阅读全文