mockito void方法
时间: 2023-08-04 22:35:55 浏览: 33
Mockito 可以用来 mock void 方法。具体的操作步骤如下:
1. 创建被 mock 的对象
```
SomeClass someObj = Mockito.mock(SomeClass.class);
```
2. 设置 void 方法的行为
```
Mockito.doNothing().when(someObj).voidMethod();
```
或者
```
Mockito.doThrow(new Exception()).when(someObj).voidMethod();
```
3. 执行被 mock 对象的 void 方法
```
someObj.voidMethod();
```
这样就可以 mock void 方法了。注意,在设置 void 方法的行为时,可以选择让它什么都不做或者抛出异常。
相关问题
mockito void静态方法
Mockito 是一种 Java 测试框架,可以用于模拟对象和行为,以便更容易地编写单元测试。Mockito 支持模拟静态方法,但要注意的是,它只能用于模拟非 final 的静态方法。
下面是一个使用 Mockito 模拟静态方法的示例:
```java
public class MyClass {
public static void myMethod(String arg) {
// 静态方法的实现
}
}
@Test
public void testMyClass() {
PowerMockito.mockStatic(MyClass.class);
Mockito.doNothing().when(MyClass.class);
MyClass.myMethod(Mockito.anyString());
// 调用 MyClass.myMethod() 时,不会执行实际的实现,而是执行模拟的行为
MyClass.myMethod("test");
PowerMockito.verifyStatic(Mockito.times(1));
MyClass.myMethod("test");
}
```
在这个示例中,我们使用 PowerMockito.mockStatic() 方法来模拟 MyClass 类的静态方法。然后,使用 Mockito.doNothing() 方法来指定当调用 MyClass.myMethod() 时不执行任何操作。
最后,使用 PowerMockito.verifyStatic() 方法来验证 MyClass.myMethod() 方法被调用了一次,且参数为 "test"。这样就可以完成对静态方法的模拟和测试了。
需要注意的是,使用 PowerMockito 来模拟静态方法需要添加 PowerMockito 的依赖,并设置 Mockito 的运行器和 PowerMockito 的运行器。在使用时应该避免滥用静态方法的模拟,否则可能会导致测试代码的可读性和可维护性下降。
mockito 静态方法
在使用 Mockito 进行单元测试时,Mockito 默认只能 Mock 非静态方法。但是,你仍然可以通过使用 PowerMock 或者 Mockito+MockitoExtension 来 Mock 静态方法。
下面是使用 PowerMock 的示例代码:
首先,你需要添加 PowerMock 和 Mockito 的依赖到你的项目中。例如,如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:
```xml
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
```
接下来,在你的测试类中使用 `@RunWith` 注解来告诉 JUnit 使用 PowerMock 运行测试,并使用 `@PrepareForTest` 注解来指定需要 Mock 的类。然后,通过调用 `PowerMockito.mockStatic()` 方法来 Mock 静态方法。
```java
import org.junit.Test;
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(YourClassWithStaticMethod.class)
public class YourTestClass {
@Test
public void testYourMethod() {
PowerMockito.mockStatic(YourClassWithStaticMethod.class);
// 在这里编写你的测试逻辑
}
}
```
注意,`YourClassWithStaticMethod` 是你想要 Mock 的含有静态方法的类。
希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。