当前位置: 首页 > 知识库问答 >
问题:

我试图用Mockito、JUnit 5和Spring Boot对服务层进行单元测试,但是我得到了NullPointerException

武卓
2023-03-14

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

这是我的测试类:

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)

我不明白为什么会有这样的反应,我的意思是,这可能是依赖性的问题吗

共有2个答案

师曦
2023-03-14

@InjectMocks用户服务 -

宓昂雄
2023-03-14

我想嘲笑不会正确注射。

对于 JUnit 5,您必须在类的顶部使用 @ExtendWith(MockitoExtension.class)。

 类似资料:
  • 请考虑以下类: 然后进行单元测试,如: 由于registerDependent是私有的,mockito实际上不会对其进行模拟。由于mTarget实际上是一个真实的实例,因此当registerDependency方法通过initialize执行时,它将尝试在模拟上执行私有方法RegisterDependence。作为mock的mock将不会被初始化,mDependants实际上将为null,从而导致

  • 我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。

  • 问题内容: 有人可以帮我这个忙。我正在使用Jersey休息测试框架版本2.21(在Grizzly容器上)编写Rest资源的单元测试。 当我调试测试类时,看到myManager的模拟对象。但是,当调试进入“ MyResouce类”时,myManager对象将变为null并得到NullPointer异常。 尝试过其他人提供的解决方案,但是没有运气。请有人帮我。我将近三天就遇到这个问题。:( 我的资源类

  • java.lang.IllegalStateException:未能加载ApplicationContext 原因:org . spring framework . beans . factory . unsatisfieddependencyexception:创建在URL[jar:file:/C:/Users/MDI vya/. m2/repository/io/spring fox/spri

  • 我想测试我的SpringBoot应用程序,它使用cassandra作为CrudRepository。我最终得到了 具有 和 这就导致了 如果我使用旧版本的cassandra-unit-Spring 它以NullPointerException结束,因为没有注入值repo。 来源https://github.com/StephanPraetsch/spring.boot.cassandra.unit

  • 我已经开始考虑在我的项目中围绕一些业务逻辑添加一些单元测试。 我想测试的第一个方法是服务层中的一个方法,它返回给定节点的子节点列表。 该方法如下所示: 我想象这样的测试方法是提供一个假树结构,然后测试提供节点是否返回正确的子节点。 ssdsContext是一个对象上下文。 我已经看到可以为提取和接口如何模拟ObjectContext或ObjectQuery 我还读到,as Entity Frame