0


springboot 单元测试

Spring Boot 单元测试是确保代码质量的重要部分,它允许我们在不实际启动整个应用的情况下测试我们的代码。在Spring Boot中,我们通常使用Spring Test模块和JUnit测试框架来编写单元测试。以下是一个简单的Spring Boot单元测试的详细代码介绍:

首先,假设我们有一个简单的

UserService

,它有一个

findUserById

方法:

@ServicepublicclassUserService{@AutowiredprivateUserRepository userRepository;publicUserfindUserById(Long id){return userRepository.findById(id).orElse(null);}}

接下来,我们将为

UserService

编写单元测试:

importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;importorg.junit.jupiter.api.extension.ExtendWith;importorg.mockito.InjectMocks;importorg.mockito.Mock;importorg.mockito.junit.jupiter.MockitoExtension;importorg.springframework.boot.test.context.SpringBootTest;importjava.util.Optional;importstaticorg.mockito.Mockito.*;importstaticorg.junit.jupiter.api.Assertions.*;@ExtendWith(MockitoExtension.class)@SpringBootTestpublicclassUserServiceTest{@MockprivateUserRepository userRepository;@InjectMocksprivateUserService userService;privateUser user;@BeforeEachvoidsetUp(){
        user =newUser();
        user.setId(1L);
        user.setName("Test User");}@TestvoidfindUserById_UserExists_ReturnsUser(){// Arrangewhen(userRepository.findById(1L)).thenReturn(Optional.of(user));// ActUser foundUser = userService.findUserById(1L);// AssertassertNotNull(foundUser);assertEquals(user.getId(), foundUser.getId());assertEquals(user.getName(), foundUser.getName());verify(userRepository).findById(1L);}@TestvoidfindUserById_UserDoesNotExist_ReturnsNull(){// Arrangewhen(userRepository.findById(2L)).thenReturn(Optional.empty());// ActUser foundUser = userService.findUserById(2L);// AssertassertNull(foundUser);verify(userRepository).findById(2L);}}

在上面的代码中,我们使用了Mockito库来模拟

UserRepository

的行为。

@Mock

注解用于创建

UserRepository

的模拟对象,而

@InjectMocks

注解则用于创建

UserService

的实例,并将模拟的

UserRepository

注入到其中。

setUp

方法中,我们创建了一个

User

对象,用于后续的测试。

我们编写了两个测试用例:

findUserById_UserExists_ReturnsUser

findUserById_UserDoesNotExist_ReturnsNull

。在每个测试用例中,我们首先使用

when

方法来定义模拟的

UserRepository

的行为。然后,我们调用

userService.findUserById

方法来执行实际的测试。最后,我们使用断言来验证测试的结果是否符合预期。

注意,我们使用

verify

方法来验证

UserRepository

findById

方法是否被调用。这是一个好的实践,因为它可以确保我们的代码确实与模拟的对象进行了交互。

总的来说,Spring Boot的单元测试可以帮助我们确保代码的正确性,并在代码更改时提供及时的反馈。通过编写详细的测试用例,我们可以确保应用的各个部分都能正常工作,从而提高应用的质量和可靠性。

标签: spring boot

本文转载自: https://blog.csdn.net/weixin_43784341/article/details/136930334
版权归原作者 山间漫步人生路 所有, 如有侵权,请联系我们删除。

“springboot 单元测试”的评论:

还没有评论