SpringBoot单元测试剖析-SpringBoot单元测试的实践

时间:2024-04-03 18:14:12

下面我们来看一个简单的SpringBoot单元测试的例子。假设我们有一个UserService类,这个类依赖一个UserRepository接口来进行数据库操作,我们的目标是测试UserService类的getUserById方法。

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
}

首先,我们需要创建一个UserRepository的模拟对象,然后定义当调用findById方法时,这个模拟对象的行为。然后,我们将这个模拟对象注入到UserService中,最后,我们就可以调用getUserById方法,并验证其返回结果是否符合预期。

@SpringBootTest
public class UserServiceTest {

    @MockBean
    private UserRepository userRepository;

    @Autowired
    private UserService userService;

    @Test
    public void testGetUserById() {
        User user = new User();
        user.setId(1L);
        user.setName("test");

        Mockito.when(userRepository.findById(1L)).thenReturn(Optional.of(user));

        User result = userService.getUserById(1L);

        Assert.assertEquals("test", result.getName());
    }
}