使用 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));
}
下面是我的 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));
}