SuperAPI AI 工具集

quarkus-tdd

测试与质量

查看项目

更新于 10-15 10:37

技能介绍

用途

Quarkus TDD 是一套测试驱动开发(TDD)工作流指南,面向 Quarkus 3.x LTS 服务,目标是在单元测试与集成测试中达到 80% 以上的覆盖率。它特别针对基于 Apache Camel 的事件驱动架构进行了优化。

适用时机

根据资料,以下场景适合使用该工作流:

  • 新增功能或 REST 端点
  • 修复缺陷或重构
  • 添加数据访问逻辑、安全规则或响应式流
  • 测试 Apache Camel 路由与事件处理器
  • 测试基于 RabbitMQ 的事件驱动服务
  • 测试条件流逻辑
  • 验证 CompletableFuture 异步操作
  • 测试 LogContext 传播

工作流步骤

  1. 先写测试(此时测试应当失败)
  2. 实现最小代码使测试通过
  3. 在测试全绿的前提下重构
  4. 使用 JaCoCo 强制覆盖率(目标 80% 以上)

主要能力与测试模式

资料展示了以下测试能力与约定:

  • 单元测试组织:使用 @Nested 类按被测方法分组,@DisplayName 提供可读的测试描述,命名采用 givenX_whenY_thenZ,并显式使用 // ARRANGE、// ACT、// ASSERT 注释(AAA 模式)。
  • Mockito 使用:通过 @Mock、@InjectMocks、@ExtendWith(MockitoExtension.class) 构建单元测试;使用 verify() 验证方法被正确调用,使用 never() 验证错误场景下方法未被调用。
  • 断言:使用 assertThrows 测试异常场景并校验消息,使用 assertDoesNotThrow 测试成功场景,结合 AssertJ 进行断言。
  • 覆盖率:覆盖正常路径、null 输入、边界情况与异常。

Camel 路由测试

资料给出了使用 @QuarkusTest 测试 Camel 路由的示例,涉及:

  • 注入 CamelContext 与 ProducerTemplate
  • 使用 @InjectMock 注入 EventService、DocumentValidator 等
  • 通过 AdviceWith.adviceWith 替换真实端点(如将 spring-rabbitmq 替换为 mock:rabbitmq)
  • 使用 MockEndpoint 设置期望消息数并用 assertIsSatisfied 校验
  • 测试 JSON 编组(.marshal().json(JsonLibrary.Jackson))结果
  • 测试路由分发(如将 invoice 路由到对应处理器)与校验错误处理

事件服务测试

示例展示了 EventService 的单元测试,包括:

  • 创建成功事件并校验事件类型、状态、负载与时间戳
  • 创建错误事件并校验错误消息
  • 对 null 负载抛出异常、对空白错误消息使用 @ParameterizedTest 与 @ValueSource 校验

CompletableFuture 测试

示例展示了 FileStorageService 的异步测试,包括:

  • 使用 doAnswer 让 ExecutorService 同步执行以便异常传播
  • 校验上传成功返回的文档信息
  • 校验 S3 上传失败时 CompletableFuture 以 CompletionException 失败并包含原因
  • 校验 LogContext 传播到异步操作

限制

资料未提供关于该工作流的安装命令、依赖版本、平台要求、收费或价格等信息,这些内容暂未提供。