本技能提供Spring Boot + MyBatis + MySQL项目的专业单元测试解决方案,确保:
查看 references/dependencies.md 获取完整的测试依赖配置。
@MybatisTest + H2内存数据库
@ExtendWith(MockitoExtension.class) + Mock依赖
@WebMvcTest + MockMvc
@SpringBootTest + Testcontainers
每个业务方法都需要以下测试:
每个可能抛出的异常都需要:
所有输入参数都需要边界测试:
// 查看完整模板: references/mapper-test-template.java
@MybatisTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
@Sql("/test-data.sql")
class [Entity]MapperTest {
// CRUD操作测试
// 复杂查询测试
// 事务边界测试
// 性能边界测试
}
// 查看完整模板: references/service-test-template.java
@ExtendWith(MockitoExtension.class)
class [Entity]ServiceTest {
// 业务逻辑测试
// 异常处理测试
// 事务管理测试
// 并发安全测试
}
// 查看完整模板: references/controller-test-template.java
@WebMvcTest([Entity]Controller.class)
class [Entity]ControllerTest {
// HTTP方法测试
// 请求参数测试
// 响应格式测试
// 错误处理测试
}
// 查看完整模板: references/integration-test-template.java
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
class [Feature]IntegrationTest {
// 端到端流程测试
// 数据一致性测试
// 性能基准测试
// 安全边界测试
}
@Sql 注解导入SQL文件
查看 references/test-data-factory.java 获取测试数据工厂实现。
查看 references/test-data-examples.sql 获取测试SQL示例。
@Test
@Transactional(propagation = Propagation.NEVER)
void testTransactionRollback() {
// 测试事务回滚
}
@Test
void testTransactionPropagation() {
// 测试事务传播
}
@Test
void testConcurrentAccess() throws InterruptedException {
// 使用CountDownLatch或CompletableFuture测试并发
}
@Test
@Timeout(5) // 5秒超时
void testPerformanceBoundary() {
// 性能边界测试
}
@Test
void testSecurityConstraints() {
// 权限验证测试
// 数据隔离测试
}
assertEquals()、assertThrows()
assertThat() 链式调用
assertThat() + Matcher
verify() 验证方法调用
any(), eq(), argThat() 等
when().thenThrow() 模拟异常
# 生成覆盖率报告
mvn clean test jacoco:report
# 检查覆盖率阈值
mvn jacoco:check
test[场景]_[条件]_[期望结果]
[Entity][Layer]Test
TestDataFactory
test-[feature].sql
@Transactional 注解位置
@MockBean 和 @Mock 的区别
@Transactional 或清理方法
logging.level.root=DEBUG
@DirtiesContext 重置Spring上下文
@TestPropertySource 覆盖配置
MockMvc 的 andDo(print()) 打印请求详情
// 创建组合注解简化测试配置
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@MybatisTest
@AutoConfigureTestDatabase
@Sql("/test-data.sql")
public @interface MybatisIntegrationTest {
}
@Tag 分组测试
当用户请求"为我的Spring Boot项目编写单元测试"时:
本技能确保为每个Spring Boot项目提供专业、全面、可维护的单元测试解决方案。
此Skill已配置为可发布到ClawHub的技能市场。包含以下发布文件:
✅ 完整性检查
✅ 配置检查
✅ 质量检查
```bash
git init
git add .
git commit -m "feat: Spring Boot单元测试Skill v1.0.0"
git remote add origin https://github.com/your-repo/springboot-unit-testing.git
git push -u origin main
```
```bash
# 打包Skill
tar -czf springboot-unit-testing-skill-v1.0.0.tar.gz test-skill/
# 或使用zip
zip -r springboot-unit-testing-skill-v1.0.0.zip test-skill/
```
让Spring Boot项目的单元测试更专业、更全面、更高效!
共 1 个版本