使用 Spring Boot CRUD 的 Junit 中的空指针异常

Null pointer Exception in Junit using Spring Boot CRUD

下面是我的 JUnit 测试代码Null pointer Exception

public class MybatisApplicationTests {
    @Autowired
    UserService userService;
    @Test
    public void deleteUserByIdTest() {
        UserController uc = new UserController();
    Long id = 3L;
    assertEquals(1,uc.deleteUserById(id));

    }

下面是我的控制器UserService.java

@DeleteMapping("/deleteUserById/{id}")
public int deleteUserById(@PathVariable("id") Long id) {
    System.out.println("delete meth called");
    userService.deleteUserById(id);
    return 1;
}

下面是我的 ServiceImpl.java

@Override
public int deleteUserById(Long id) {
    System.out.println("delete meth service called");
    userMapper.deleteUserById(id);
    return 1;
}

我尝试了所有可能的方法,但我得到的是 NullPointerException 错误。帮助我解决错误并提前致谢。

理想情况下,您应该自动装配 UserController 而不是使用 new 运算符,因为该控制器中的 services/beans 需要自动装配。

public class MybatisApplicationTests {
    @Autowired
    UserController uc;
    @Test
    public void deleteUserByIdTest() {
       Long id = 3L;
       assertEquals(1,uc.deleteUserById(id));
    }

但是如果这是一个单元测试,最好通过使用注入模拟和模拟来完全模拟内部 bean 功能。

@RunWith(MockitoJUnitRunner.class)
public class MybatisApplicationTests {

    @InjectMocks
    UserController uc;
    @Mock
    UserService userService;
    @Test
    public void deleteUserByIdTest() {
       Long id = 3L;
       assertEquals(1,uc.deleteUserById(id));
    }