mock when 无返回怎么办_Mockito when()。thenReturn()在测试系统中不起作用
时间: 2023-11-22 19:52:47 浏览: 35
当`Mockito when().thenReturn()`在测试系统中不起作用时,有几种可能的原因:
1. 没有正确地导入Mockito库:请确保你在测试类中正确地导入了Mockito库。
2. 没有正确地初始化Mockito:在测试类的setUp()方法中,你应该初始化Mockito并设置mock对象。例如:
```
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
```
3. 当中的参数不匹配:请确保你在when中使用了与实际调用相同的参数。例如:
```
when(mockObject.methodName("param1")).thenReturn(expectedResult);
```
4. 当中的参数类型不匹配:请确保你在when中使用了正确的参数类型。例如,如果你的方法期望一个整数参数,但你传递了一个字符串参数,则会出现问题。
5. 没有正确地设置对象的行为:请确保你在when中正确地设置了mock对象的行为。例如,如果你想在调用方法时抛出异常,则应该使用以下代码:
```
when(mockObject.methodName()).thenThrow(new Exception());
```
希望这些解决方案可以帮助你解决问题!
相关问题
java 单元测试inject_Mockito中@Mock与@InjectMock
在 Java 单元测试中,Mockito 是一个常用的框架,用于模拟对象的行为。其中 @Mock 和 @InjectMocks 是两个常用的注解。
@Mock 用于模拟一个类的行为,例如:
```java
@Mock
private UserService userService;
```
@InjectMocks 用于注入 Mock 对象,例如:
```java
@InjectMocks
private UserController userController;
```
当使用 @InjectMocks 注解时,Mockito 会自动将被注入的 Mock 对象注入到目标对象中。
举个例子,如果我们要测试一个 UserController,其中依赖了 UserService,我们可以使用以下代码:
```java
@RunWith(MockitoJUnitRunner.class)
public class UserControllerTest {
@Mock
private UserService userService;
@InjectMocks
private UserController userController;
@Test
public void testGetUser() {
User user = new User();
user.setId(1L);
user.setName("张三");
Mockito.when(userService.getUserById(1L)).thenReturn(user);
User result = userController.getUser(1L);
Assert.assertEquals(user, result);
}
}
```
在这个例子中,我们使用 @Mock 注解模拟了 UserService,使用 @InjectMocks 注解注入了 UserController,并在测试方法中设置了 UserService 的行为,最后验证了 UserController 的行为是否正确。
mockito.when().thenreturn()
Mockito 是一个用于 Java 的 mocking 框架。when().thenReturn() 方法用于指定当调用某个方法时,返回指定的结果。这样可以在测试中模拟依赖对象的行为。
例如:
```
Foo mockFoo = mock(Foo.class);
when(mockFoo.bar()).thenReturn(5);
assertEquals(5, mockFoo.bar());
```
这段代码中,我们创建了一个 Foo 类型的 mock 对象,并通过 when(mockFoo.bar()).thenReturn(5) 指定当 mockFoo.bar() 被调用时返回 5。然后我们断言 mockFoo.bar() 的返回值是 5。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)