Mockito 是一个流行的 Java 测试框架,用于创建和使用 mock 对象。Mockito 可以帮助你在单元测试中模拟依赖项,从而隔离被测试的代码。Spring Boot 是一个用于简化 Spring 应用程序初始搭建以及开发过程的框架。
Mockito 支持多种类型的 mock 对象:
Mockito 适用于各种需要模拟依赖项的场景,例如:
假设我们有一个简单的 Spring Boot 应用程序,其中有一个 UserService
类依赖于 UserRepository
接口。
在 pom.xml
中添加 Mockito 和 Spring Boot Test 依赖:
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
UserService
和 UserRepository
// UserRepository.java
public interface UserRepository {
User findById(Long id);
}
// UserService.java
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User getUserById(Long id) {
return userRepository.findById(id);
}
}
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class UserServiceTest {
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
@BeforeEach
public void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
public void testGetUserById() {
// 创建模拟数据
User user = new User();
user.setId(1L);
user.setName("John Doe");
// 定义 mock 行为
when(userRepository.findById(1L)).thenReturn(user);
// 调用被测试的方法
User result = userService.getUserById(1L);
// 验证结果
assertNotNull(result);
assertEquals(1L, result.getId());
assertEquals("John Doe", result.getName());
// 验证方法调用
verify(userRepository, times(1)).findById(1L);
}
}
通过以上步骤,你可以为 Spring Boot 模块创建 Mockito 测试用例,从而有效地进行单元测试。
领取专属 10元无门槛券
手把手带您无忧上云