mockito 无返回值方法
时间: 2023-08-04 08:10:14 浏览: 437
在 Mockito 中,当我们需要模拟一个无返回值方法时,可以使用 `Mockito.doNothing()` 方法。示例如下:
```
// 假设我们要模拟一个无返回值的方法:void someMethod(String arg)
SomeClass mockedObject = mock(SomeClass.class);
// 当 someMethod 方法传入任意字符串参数时,什么也不做
doNothing().when(mockedObject).someMethod(anyString());
// 调用 someMethod 方法,不会有任何返回值
mockedObject.someMethod("test");
```
在上面的示例中,我们使用 `Mockito.doNothing()` 方法来模拟 `SomeClass` 类中的 `someMethod` 方法。该方法接受一个字符串参数,但实际上不做任何事情。我们使用 `doNothing().when(mockedObject).someMethod(anyString())` 来告诉 Mockito 在调用 `someMethod` 方法时,什么也不做。然后我们调用 `mockedObject.someMethod("test")`,该方法不会有任何返回值。
相关问题
mockito无返回值方法单元测试
Mockito是一个流行的模拟框架,它允许你在单元测试中创建和配置模拟对象。对于无返回值的方法(void方法),Mockito提供了一些特定的方式来验证它们的行为。
在使用Mockito测试无返回值方法时,你可以使用`doNothing()`、`doThrow()`和`doAnswer()`等方法。下面是一些基本的示例:
1. `doNothing()`:当你想要模拟void方法不执行任何操作时,可以使用`doNothing()`。这对于测试void方法没有副作用的情况非常有用。
```java
// 创建模拟对象
MyClass mockObj = mock(MyClass.class);
// 当调用void方法时,不执行任何操作
doNothing().when(mockObj).myVoidMethod();
// 调用void方法
mockObj.myVoidMethod();
// 验证void方法被调用了一次
verify(mockObj, times(1)).myVoidMethod();
```
2. `doThrow()`:如果你需要测试void方法在执行时抛出异常的情况,可以使用`doThrow()`。
```java
// 创建模拟对象
MyClass mockObj = mock(MyClass.class);
// 当调用void方法时,抛出指定的异常
doThrow(new RuntimeException("Method execution failed")).when(mockObj).myVoidMethod();
// 调用void方法(应该抛出异常)
mockObj.myVoidMethod();
```
3. `doAnswer()`:如果你需要在void方法被调用时执行一些特定的逻辑,可以使用`doAnswer()`。
```java
// 创建模拟对象
MyClass mockObj = mock(MyClass.class);
// 当调用void方法时,执行指定的逻辑
doAnswer(invocation -> {
// 在这里编写void方法被调用时你想要执行的代码
System.out.println("Method was called");
return null;
}).when(mockObj).myVoidMethod();
// 调用void方法
mockObj.myVoidMethod();
// 验证void方法被调用了一次
verify(mockObj, times(1)).myVoidMethod();
```
使用这些方法可以帮助你验证void方法的行为是否符合预期。
mockito静态方法无返回值
Mockito 不支持直接 mock 静态方法,但是你可以使用 PowerMockito 来 mock 静态方法并指定它无返回值。以下是一个示例代码:
```
@RunWith(PowerMockRunner.class)
@PrepareForTest(YourClassWithStaticMethod.class)
public class YourTestClass {
@Test
public void testYourMethod() {
PowerMockito.mockStatic(YourClassWithStaticMethod.class);
doNothing().when(YourClassWithStaticMethod.class);
YourClassWithStaticMethod.yourStaticMethod(); // 调用静态方法
// 在这里进行你的测试
}
}
```
在这个示例中,我们使用 PowerMockito 的 `mockStatic()` 方法来 mock 静态类 `YourClassWithStaticMethod`,然后使用 `doNothing()` 方法来指定当这个静态方法被调用时什么也不做。最后,在测试代码中调用这个静态方法并进行你的测试。
需要注意的是,使用 PowerMockito 来 mock 静态方法会增加代码的复杂度,并且有可能会导致一些奇怪的问题。因此,应该尽量避免使用静态方法来编写可测试的代码。
阅读全文