我正在尝试使用 Mockito、JUnit 5 和 Spring Boot 对服务层进行单元测试,但我得到 NullPointerException

I am trying to do a unit test into the service layer with Mockito, JUnit 5 and Spring Boot but I get NullPointerException

我正在尝试使用 Mockito、JUnit 5 和 Spring Boot 对服务层进行单元测试,但出现 NullPointerException。

这是我的测试class:

class UserServiceTest {

@Mock
UserRepository userRepository;

@InjectMocks
IUserService userService;

UserMapper userMapper;

@Test
void when_save_user_it_should_return_user(){
    UserRequest userRequest = UserRequest.builder()
            .email("pedro@gmail.com")
            .password("123456")
            .firstName("Pedro")
            .lastName("Perez")
            .birthDate(LocalDateTime.now())
            .imageUrl("")
            .currency("170")
            .build();
    Mockito.when(userRepository.save(Mockito.any(UserEntity.class))).thenReturn(new UserEntity());
    UserEntity createdUser = userService.createUser(userRequest);


    assertThat(createdUser.getFirstName()).isSameAs(userRequest.getFirstName());
}

}

这是我的回复:

java.lang.NullPointerException
at com.jhapdevelopment.moneyhub.usermicroservice.services.implementations.UserServiceTest.when_save_user_it_should_return_user(UserServiceTest.java:41)

我不明白为什么我会收到这个回复,我的意思是可能是依赖性问题

我猜 mocking 没有正确注入。

对于 JUnit 5,您必须在 class 之上使用 @ExtendWith(MockitoExtension.class)

@InjectMocks IUserService userService -> 替换为 UserServiceImpl