powermockito 静态void方法
时间: 2023-06-05 16:47:11 浏览: 991
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可以用来测试静态方法。
使用PowerMockito,可以模拟静态方法的行为,以便进行测试。首先,需要使用@PrepareForTest注解来指定需要模拟的类。然后,使用PowerMockito.mockStatic方法来模拟静态方法的行为。最后,使用PowerMockito.when方法来设置模拟方法的返回值或抛出异常。
例如,假设有一个名为StringUtil的类,其中有一个静态方法toUpperCase,可以使用以下代码来测试它:
```
@RunWith(PowerMockRunner.class)
@PrepareForTest(StringUtil.class)
public class StringUtilTest {
@Test
public void testToUpperCase() {
PowerMockito.mockStatic(StringUtil.class);
PowerMockito.when(StringUtil.toUpperCase("hello")).thenReturn("HELLO");
String result = StringUtil.toUpperCase("hello");
assertEquals("HELLO", result);
}
}
```
在这个例子中,使用@PrepareForTest注解来指定需要模拟的StringUtil类。然后,使用PowerMockito.mockStatic方法来模拟StringUtil类的行为。最后,使用PowerMockito.when方法来设置模拟方法的返回值。
通过这种方式,可以使用PowerMockito来测试静态方法的行为。