mockito.when返回值是void
时间: 2023-04-23 12:07:45 浏览: 131
当Mockito.when()方法返回void时,通常是因为我们在模拟一个void方法。这意味着我们不能使用thenReturn()方法来指定返回值,而是应该使用doNothing()或doThrow()等方法来模拟方法的行为。例如:
```
Mockito.doNothing().when(mockObject).voidMethod();
```
这将模拟一个voidMethod()方法,使其不执行任何操作。如果我们想在方法被调用时抛出异常,可以使用doThrow()方法:
```
Mockito.doThrow(new RuntimeException()).when(mockObject).voidMethod();
```
这将模拟一个voidMethod()方法,使其在被调用时抛出RuntimeException异常。
相关问题
org.mockito.exceptions.misusing.CannotStubVoidMethodWithReturnValue
这个错误通常是由于使用了Mockito框架中的when()方法来为void方法设置返回值所导致的。因为void方法并不会返回任何值,所以这种设置是无效的,会导致这个异常的抛出。
要解决这个问题,你需要使用Mockito框架中的doNothing()、doAnswer()等void方法专用的方法来为void方法设置行为。如果你需要对一个void方法进行返回值的验证,可以使用Mockito的verify()方法来实现。
mockito 无返回值方法
在 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")`,该方法不会有任何返回值。