在使用springboot框架集成mybatis,正常运行三层结构已经能从数据库正常查询出数据,但是想用单元对mapper中的接口方法单独进行测试,会报空指针异常。




在使用springboot框架集成mybatis,正常运行三层结构已经能从数据库正常查询出数据,但是想用单元对mapper中的接口方法单独进行测试,会报空指针异常。




阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你使用 Spring Boot 集成 MyBatis,正常情况下可以从数据库查询出数据,但是当你想单独测试 Mapper 中的接口方法时,却报空指针异常。
解决方案:
@Autowired 注入 Mapper 对象@RunWith(SpringRunner.class)
@SpringBootTest
public class MyMapperTest {
@Autowired
private MyMapper myMapper;
@Test
public void testSelect() {
List<User> users = myMapper.selectUsers();
// ...
}
}
@Resource 注入 Mapper 对象@RunWith(SpringRunner.class)
@SpringBootTest
public class MyMapperTest {
@Resource
private MyMapper myMapper;
@Test
public void testSelect() {
List<User> users = myMapper.selectUsers();
// ...
}
}
@MockBean 模拟 Mapper 对象@RunWith(SpringRunner.class)
@SpringBootTest
public class MyMapperTest {
@MockBean
private MyMapper myMapper;
@Test
public void testSelect() {
when(myMapper.selectUsers()).thenReturn(Arrays.asList(new User()));
List<User> users = myMapper.selectUsers();
// ...
}
}
@SpyBean.spying 对象@RunWith(SpringRunner.class)
@SpringBootTest
public class MyMapperTest {
@SpyBean
private MyMapper myMapper;
@Test
public void testSelect() {
List<User> users = myMapper.selectUsers();
// ...
}
}
这些方法都可以解决你遇到的问题,但是需要根据你的实际情况选择合适的方法。