mockito.when返回值是void
时间: 2023-04-23 10:07:45 浏览: 246
当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()方法来实现。
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: TpEmployeeInfo cannot be returned by getSessionUser() getSessionUser() should return SessionUser *** If you're unsure why you're getting above error read on. Due to the nature of the syntax above problem might occur because: 1. This exception *might* occur in wrongly written multi-threaded tests. Please refer to Mockito FAQ on limitations of concurrency testing. 2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies - - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.
这个错误是由Mockito框架抛出的,意味着你使用了错误的返回类型来模拟getSessionUser()方法的返回值。根据错误消息中的提示,getSessionUser()方法应该返回SessionUser类型的值,但是你却返回了TpEmployeeInfo类型的值。因此,你需要查看你的测试代码,并确保你正确地模拟了getSessionUser()方法并使用了正确的返回类型。以下是一些可能的原因和解决方案:
1. 多线程测试的限制:如果你在多线程测试中遇到了这个错误,可能是因为你没有正确地同步你的测试代码。请查看Mockito的FAQ,了解关于并发测试的限制和最佳实践。
2. 使用when(spy.foo()).then()语法来模拟一个Spy对象:如果你在模拟Spy对象时遇到了这个错误,你应该使用doReturn()或doThrow()等方法来模拟方法的返回值,而不是when(spy.foo()).then()语法。
例如,假设你的测试代码是这样的:
```java
@Test
public void testSomeMethod() {
// 创建一个Spy对象
SomeClass spy = Mockito.spy(new SomeClass());
// 模拟getSessionUser()方法并返回错误的类型
when(spy.getSessionUser()).thenReturn(new TpEmployeeInfo());
// 调用被测试的方法
someMethod(spy);
// 断言测试结果
// ...
}
```
你应该使用doReturn()方法来模拟getSessionUser()方法的返回值,例如:
```java
@Test
public void testSomeMethod() {
// 创建一个Spy对象
SomeClass spy = Mockito.spy(new SomeClass());
// 模拟getSessionUser()方法并返回正确的类型
doReturn(new SessionUser()).when(spy).getSessionUser();
// 调用被测试的方法
someMethod(spy);
// 断言测试结果
// ...
}
```
这样就可以避免上述错误了。
阅读全文