用途
本技能用于在 Quarkus 项目中编写和维护快速的单元测试,核心策略是“Mockito 优先,仅在 CDI 装配真正重要时使用 @QuarkusTest”。目标是减少缓慢的 @QuarkusTest 使用,提升测试执行速度。
适用时机包括:
- 为 Quarkus 项目添加或改进单元测试
- 用 Mockito 优先的测试减少 @QuarkusTest 的使用
- 在 Quarkus 测试中加入 @InjectSpy 部分模拟或 QuarkusTestProfile 配置
- 将重复的测试方法转换为使用 @CsvSource 或 @MethodSource 的 @ParameterizedTest
- 为 Quarkus 服务编写快速的纯单元测试
主要能力
技能覆盖以下测试方式:
- 纯 JUnit 5 + Mockito,不启动容器(@ExtendWith(MockitoExtension.class))
- @QuarkusTest 配合 @InjectMock 进行完整 CDI Bean 替换
- @InjectSpy 部分模拟:将真实 Bean 包装为 spy,并覆盖特定方法
- 使用 REST Assured 进行 HTTP 层面的 @QuarkusTest 资源测试
- @ParameterizedTest 搭配 @CsvSource(内联数据)和 @MethodSource(复杂对象)
- 使用 QuarkusTestProfile 与 @TestProfile 实现测试专用配置覆盖
- 命名约定:*Test 交给 Surefire(快速阶段),*IT 交给 Failsafe(验证阶段)
- 说明何时应升级为集成测试(对应 @422)
使用方式
工作流为:
- 阅读参考文档并评估项目上下文:阅读 references/421-frameworks-quarkus-testing-unit-tests.md,并在提出改动前检查当前项目设置。
- 收集范围并确定目标改进:识别期望结果、约束条件以及最小安全改动集合。
- 应用与框架一致的改动:按照参考模式与项目约定实现或重构配置/代码。
- 运行验证并报告结果:执行相应的构建/测试,并总结改动了什么、验证了什么以及后续操作。
约束与前置条件:
- 在重构测试前先编译;应用后验证完整测试套件。
- 强制要求:应用任何改动前运行 ./mvnw compile 或 mvn compile
- 前置条件:项目必须在应用测试改进前可以编译
- 安全要求:如果编译失败,立即停止
- 阻塞条件:编译错误必须由用户解决后才能继续
- 验证:应用改进后运行 ./mvnw clean verify 或 mvn clean verify
- 应用前:阅读参考文档以了解详细规则和示例
适用场景
适合需要为 Quarkus 应用编写快速单元测试、减少容器启动开销、使用 Mockito 模拟与部分模拟、进行参数化测试以及按测试阶段区分命名(*Test 与 *IT)的开发场景。
限制
本技能明确要求项目在改动前必须可编译,编译失败时立即停止,编译错误需由用户解决。其余如具体支持版本、依赖坐标、价格与平台信息,资料中暂未提供。