Spring Boot + MyBatis 单元测试专家
name: SpringBoot-MyBatis-UnitTesting
by davieyang · published 2026-03-22
$ claw add gh:davieyang/davieyang-springboot-unit-testing---
name: SpringBoot-MyBatis-UnitTesting
version: 1.0.0
description: |
专业的Spring Boot + MyBatis + MySQL项目单元测试技能,提供全面的测试覆盖策略。
当用户需要为Spring Boot项目编写单元测试时使用此技能,特别是包含:
- 完整的正常流程测试
- 充分的异常场景测试
- 全面的边界值测试
- MyBatis Mapper层测试
- Service层业务逻辑测试
- Controller层API测试
- 集成测试和端到端测试
适用于:JUnit 5、Mockito、AssertJ、Hamcrest、H2数据库、Testcontainers等技术栈。
author: WorkBuddy User
license: MIT
repository: https://github.com/your-repo/springboot-unit-testing
tags: [spring-boot, mybatis, unit-testing, java, junit, mockito, mysql, testing]
---
# Spring Boot + MyBatis 单元测试专家
技能概述
本技能提供Spring Boot + MyBatis + MySQL项目的专业单元测试解决方案,确保:
1. **正常流程全面覆盖** - 所有业务逻辑都有对应的成功测试
2. **异常场景充分测试** - 各种错误情况和异常处理都有测试验证
3. **边界值完整验证** - 数据边界、参数边界、状态边界都有测试
4. **分层测试策略** - Mapper、Service、Controller各层都有专业测试方法
快速开始
1. Maven依赖配置
查看 [references/dependencies.md](references/dependencies.md) 获取完整的测试依赖配置。
2. 测试结构
3. 测试覆盖率目标
核心测试策略
正常流程测试 (Normal Flow Testing)
每个业务方法都需要以下测试:
异常流程测试 (Exception Flow Testing)
每个可能抛出的异常都需要:
边界值测试 (Boundary Value Testing)
所有输入参数都需要边界测试:
测试模板
Mapper层测试模板
// 查看完整模板: references/mapper-test-template.java
@MybatisTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
@Sql("/test-data.sql")
class [Entity]MapperTest {
// CRUD操作测试
// 复杂查询测试
// 事务边界测试
// 性能边界测试
}
Service层测试模板
// 查看完整模板: references/service-test-template.java
@ExtendWith(MockitoExtension.class)
class [Entity]ServiceTest {
// 业务逻辑测试
// 异常处理测试
// 事务管理测试
// 并发安全测试
}
Controller层测试模板
// 查看完整模板: references/controller-test-template.java
@WebMvcTest([Entity]Controller.class)
class [Entity]ControllerTest {
// HTTP方法测试
// 请求参数测试
// 响应格式测试
// 错误处理测试
}
集成测试模板
// 查看完整模板: references/integration-test-template.java
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
class [Feature]IntegrationTest {
// 端到端流程测试
// 数据一致性测试
// 性能基准测试
// 安全边界测试
}
测试数据管理
测试数据策略
1. **静态测试数据**: 使用 `@Sql` 注解导入SQL文件
2. **动态测试数据**: 使用Builder模式创建测试对象
3. **随机测试数据**: 使用Faker库生成随机数据
4. **边界测试数据**: 专门测试边界条件的数据
测试数据工厂
查看 [references/test-data-factory.java](references/test-data-factory.java) 获取测试数据工厂实现。
SQL测试数据文件
查看 [references/test-data-examples.sql](references/test-data-examples.sql) 获取测试SQL示例。
特殊场景测试
1. 事务测试
@Test
@Transactional(propagation = Propagation.NEVER)
void testTransactionRollback() {
// 测试事务回滚
}
@Test
void testTransactionPropagation() {
// 测试事务传播
}
2. 并发测试
@Test
void testConcurrentAccess() throws InterruptedException {
// 使用CountDownLatch或CompletableFuture测试并发
}
3. 性能测试
@Test
@Timeout(5) // 5秒超时
void testPerformanceBoundary() {
// 性能边界测试
}
4. 安全测试
@Test
void testSecurityConstraints() {
// 权限验证测试
// 数据隔离测试
}
测试工具和最佳实践
断言选择指南
Mock使用指南
测试生命周期
质量保证
代码覆盖率检查
# 生成覆盖率报告
mvn clean test jacoco:report
# 检查覆盖率阈值
mvn jacoco:check
测试代码质量
测试命名规范
故障排除
常见问题
1. **事务不回滚**: 检查 `@Transactional` 注解位置
2. **Mock不生效**: 检查 `@MockBean` 和 `@Mock` 的区别
3. **数据库连接失败**: 检查H2数据库配置
4. **测试数据污染**: 使用 `@Transactional` 或清理方法
调试技巧
扩展和定制
自定义测试注解
// 创建组合注解简化测试配置
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@MybatisTest
@AutoConfigureTestDatabase
@Sql("/test-data.sql")
public @interface MybatisIntegrationTest {
}
测试工具扩展
性能优化
参考资源
核心文档
最佳实践
工具脚本
使用示例
当用户请求"为我的Spring Boot项目编写单元测试"时:
1. **分析项目结构** - 识别Entity、Mapper、Service、Controller
2. **选择测试策略** - 根据需求选择正常/异常/边界测试
3. **生成测试代码** - 使用模板生成对应层的测试
4. **配置测试环境** - 设置依赖、数据、配置
5. **验证测试覆盖** - 检查覆盖率,补充缺失测试
本技能确保为每个Spring Boot项目提供专业、全面、可维护的单元测试解决方案。
---
📦 发布信息
ClawHub发布配置
此Skill已配置为可发布到ClawHub的技能市场。包含以下发布文件:
1. **clawhub.yml** - 发布配置文件
2. **package.json** - 标准化包描述
3. **LICENSE** - MIT许可证
4. **README.md** - 完整使用说明
发布准备检查清单
✅ **完整性检查**
✅ **配置检查**
✅ **质量检查**
发布到ClawHub的步骤
1. **创建GitHub仓库**(推荐)
```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
```
2. **准备发布包**
```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/
```
3. **发布到ClawHub**
- 访问ClawHub网站 (https://clawhub.com)
- 注册/登录开发者账户
- 创建新Skill发布
- 填写Skill信息(参考clawhub.yml)
- 上传打包文件
- 设置分类标签:spring-boot, testing, java
- 提交审核
4. **维护和更新**
- 定期更新测试策略
- 收集用户反馈
- 发布新版本
- 更新文档
Skill分类信息
用户支持
版本历史
- 完整的Spring Boot单元测试策略
- 正常流程、异常测试、边界值测试全面覆盖
- 3个实用工具脚本
- 4个详细参考文档
- 2个完整代码示例
---
**让Spring Boot项目的单元测试更专业、更全面、更高效!**
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...