mockito void方法
时间: 2023-08-04 14:38:10 浏览: 43
Mockito 可以用来 mock 一个 void 方法,具体可以按照以下步骤进行操作:
1. 创建被 mock 的对象
```java
SomeClass someClass = Mockito.mock(SomeClass.class);
```
2. 进行 mock 操作
```java
Mockito.doNothing().when(someClass).someVoidMethod();
```
这里的 `someVoidMethod()` 是被 mock 的 void 方法,`doNothing()` 表示 mock 这个方法的操作是不做任何事情。
3. 执行测试
```java
someClass.someVoidMethod();
```
这时,当执行 `someVoidMethod()` 方法时,就不会有任何的操作。
注意:如果被 mock 的方法有返回值,那么需要使用 `when(...).thenReturn(...)` 来进行 mock 操作。
相关问题
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 的含有静态方法的类。
希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。