java 单元测试inject_Mockito中@Mock与@InjectMock
时间: 2023-12-14 19:37:33 浏览: 161
在 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 的行为是否正确。
阅读全文