Token导航 LogoToken导航TokenDH.com
效率需要联网clawhub未标认证来源可访问clear审计提醒

springboot-unit-testingspringboot 单元测试

Agent Skill

用于辅助 Java 项目开发、面向对象设计、Spring 生态、Maven 或 Gradle 依赖和后端工程实践。它适合让 Agent 分析类结构、设计接口、整理服务分层、生成测试或检查常见代码坏味道。使用时需要结合项目已有架构、包结构和依赖版本,不应只按通用教程改代码;涉及数据库、事务、并发或框架配置时,应先确认运行环境和回归测试范围。

总安装

7,980

周安装

326

GitHub Stars

公开资料未说明

下载量

2,582
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:springboot-unit-testing(springboot 单元测试)
来源仓库:https://github.com/davieyang/springboot-unit-testing
安装命令:
openclaw skills install springboot-unit-testing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install springboot-unit-testing

简介

针对 Spring Boot + MyBatis + MySQL 项目提供系统化单元测试方案。

  • 覆盖正常流程、异常处理与边界值测试用例的设计指导。
  • 包含 Service 层 Mock 策略与数据库事务回滚验证方法说明。
  • 输出 JUnit 测试类骨架与断言语句,需补充具体业务逻辑实现细节。
  • springboot-unit-testing 属于效率类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

name
SpringBoot-MyBatis-UnitTesting
version
1.0.0
description
|
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 获取完整的测试依赖配置。

2. 测试结构

  • Mapper层: 使用 @MybatisTest + H2内存数据库
  • Service层: 使用 @ExtendWith(MockitoExtension.class) + Mock依赖
  • Controller层: 使用 @WebMvcTest + MockMvc
  • 集成测试: 使用 @SpringBootTest + Testcontainers

3. 测试覆盖率目标

  • Mapper层: 90%+ (覆盖所有SQL语句)
  • Service层: 95%+ (覆盖所有业务逻辑分支)
  • Controller层: 85%+ (覆盖所有API端点)
  • 异常测试: 100% (所有异常处理逻辑)
  • 边界测试: 100% (所有边界条件)

核心测试策略

正常流程测试 (Normal Flow Testing)

每个业务方法都需要以下测试:

  • 成功场景测试: 验证方法在理想条件下的行为
  • 多数据测试: 测试不同数据组合下的表现
  • 状态转换测试: 验证状态机的正确转换
  • 并发安全测试: 确保线程安全(如果适用)

异常流程测试 (Exception Flow Testing)

每个可能抛出的异常都需要:

  • 参数验证异常: 测试无效参数的异常处理
  • 业务逻辑异常: 测试业务规则违反的异常
  • 数据不存在异常: 测试查询不到数据的异常
  • 并发异常: 测试并发冲突的异常处理
  • 外部依赖异常: 测试外部服务失败的异常

边界值测试 (Boundary Value Testing)

所有输入参数都需要边界测试:

  • 数值边界: 最小/最大/临界值测试
  • 字符串边界: 空/null/最大长度/特殊字符测试
  • 集合边界: 空集合/单元素/最大容量测试
  • 时间边界: 最小/最大时间/时区边界测试
  • 状态边界: 初始/中间/最终状态测试

测试模板

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 获取测试数据工厂实现。

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() {
    // 权限验证测试
    // 数据隔离测试
}

测试工具和最佳实践

断言选择指南

  • 基本断言: 使用JUnit 5的 assertEquals()assertThrows()
  • 流式断言: 使用AssertJ的 assertThat() 链式调用
  • 匹配器断言: 使用Hamcrest的 assertThat() + Matcher
  • 自定义断言: 创建领域特定的断言方法

Mock使用指南

  • 最小化Mock: 只Mock外部依赖
  • 验证调用: 使用 verify() 验证方法调用
  • 参数匹配: 使用 any(), eq(), argThat()
  • 异常模拟: 使用 when().thenThrow() 模拟异常

测试生命周期

  • @BeforeEach: 准备测试数据
  • @AfterEach: 清理测试数据
  • @BeforeAll: 初始化测试环境
  • @AfterAll: 清理测试环境

质量保证

代码覆盖率检查

# 生成覆盖率报告
mvn clean test jacoco:report

# 检查覆盖率阈值
mvn jacoco:check

测试代码质量

  • 可读性: 测试代码应该像文档一样清晰
  • 可维护性: 避免重复代码,使用工厂模式
  • 可执行性: 测试应该快速执行,独立运行
  • 可调试性: 提供清晰的失败信息

测试命名规范

  • 方法名: test[场景]_[条件]_[期望结果]
  • 测试类: [Entity][Layer]Test
  • 数据工厂: TestDataFactory
  • 测试文件: test-[feature].sql

故障排除

常见问题

  1. 事务不回滚: 检查 @Transactional 注解位置
  2. Mock不生效: 检查 @MockBean@Mock 的区别
  3. 数据库连接失败: 检查H2数据库配置
  4. 测试数据污染: 使用 @Transactional 或清理方法

调试技巧

  • 启用详细日志: logging.level.root=DEBUG
  • 使用 @DirtiesContext 重置Spring上下文
  • 使用 @TestPropertySource 覆盖配置
  • 使用 MockMvcandDo(print()) 打印请求详情

扩展和定制

自定义测试注解

// 创建组合注解简化测试配置
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@MybatisTest
@AutoConfigureTestDatabase
@Sql("/test-data.sql")
public @interface MybatisIntegrationTest {
}

测试工具扩展

  • 自定义Matcher: 创建领域特定的Matcher
  • 测试监听器: 实现TestExecutionListener
  • 自定义Runner: 扩展SpringJUnit4ClassRunner
  • 测试扩展: 实现Extension接口

性能优化

  • 测试分组: 使用 @Tag 分组测试
  • 并行执行: 配置Maven Surefire并行执行
  • 数据库优化: 使用H2内存数据库模式
  • Mock优化: 避免不必要的Mock初始化

参考资源

核心文档

最佳实践

工具脚本

使用示例

当用户请求"为我的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 - 完整使用说明

发布准备检查清单

完整性检查

  • [x] SKILL.md - 主技能文件
  • [x] README.md - 使用文档
  • [x] scripts/ - 3个实用脚本
  • [x] references/ - 4个参考文档
  • [x] examples/ - 2个示例测试代码
  • [x] assets/ - 资源文件夹

配置检查

  • [x] clawhub.yml - 发布配置
  • [x] package.json - 包管理
  • [x] LICENSE - 许可证文件

质量检查

  • [x] 测试策略文档齐全
  • [x] 代码示例完整可运行
  • [x] 工具脚本可用
  • [x] 依赖配置正确

发布到ClawHub的步骤

  1. 创建GitHub仓库(推荐)
   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
  1. 准备发布包
   # 打包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/
  1. 发布到ClawHub

- 访问ClawHub网站 (https://clawhub.com) - 注册/登录开发者账户 - 创建新Skill发布 - 填写Skill信息(参考clawhub.yml) - 上传打包文件 - 设置分类标签:spring-boot, testing, java - 提交审核

  1. 维护和更新

- 定期更新测试策略 - 收集用户反馈 - 发布新版本 - 更新文档

Skill分类信息

  • 类别: 开发工具 / 测试框架
  • 技术栈: Spring Boot, MyBatis, MySQL, JUnit 5
  • 适用场景: 企业级Java项目单元测试
  • 难度级别: 中级(需要Java和Spring Boot基础)
  • 预估时间: 使用此Skill可减少50%的测试开发时间

用户支持

  • 文档: 完整的README和示例代码
  • 问题反馈: 通过GitHub Issues
  • 社区: 分享测试经验和最佳实践
  • 贡献: 欢迎提交PR改进Skill

版本历史

  • v1.0.0 (2026-03-20) - 初始发布

- 完整的Spring Boot单元测试策略 - 正常流程、异常测试、边界值测试全面覆盖 - 3个实用工具脚本 - 4个详细参考文档 - 2个完整代码示例


让Spring Boot项目的单元测试更专业、更全面、更高效!

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

88.03%
按下载量换算2,273

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills