只测试 Mapper 层(比如 MyBatis、MyBatis-Plus、JPA Repository)可以使用轻量级的注解配置,比如:
✅ 用
@MybatisTest
(推荐)
适用于只测 Mapper(不启动 Web 层、Service 层)
@MybatisTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) // 如果你用的是本地真实数据库而不是 H2
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectUserById() {
User user = userMapper.selectUserById(8911L);
System.out.println(user);
assertThat(user).isNotNull();
assertThat(user.getName()).isEqualTo("张三");
}
}
✅ 注解说明
|
注解 |
作用 |
|---|---|
|
@MybatisTest |
只加载和 MyBatis 有关的 Bean(包括 Mapper、MyBatis 配置等),不加载 Controller、Service |
|
@AutoConfigureTestDatabase |
默认会用内存数据库(如 H2),你如果不想替换就加 Replace.NONE |
|
@Autowired UserMapper |
直接注入你想测试的 Mapper |
📝 注意点
-
如果你不想用内存数据库(H2),记得加:
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
-
否则 Spring 会默认替你换掉为 H2(导致连接失败或者数据不一致)
-
你需要在 application.yml 或测试配置中配置好数据库连接信息(用于测试环境)
❗如果你用的是 JPA Repository 而不是 MyBatis:
那用 @DataJpaTest 替代 @MybatisTest
浙公网安备 33010602011771号