为 Quarkus 3.x 项目提供测试驱动开发方案,支持功能开发、修复与重构。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "quarkus-tdd" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/quarkus-tdd/SKILL.md 2. 保存为 ~/.claude/skills/quarkus-tdd/SKILL.md 3. 装好后重载技能,告诉我可以用了
请用 Quarkus 3.x 的 TDD 方式为一个“创建订单”REST API 设计实现步骤:先写 JUnit 5 与 REST Assured 测试,再补最小实现,使用 Mockito 模拟仓储层,并给出目录结构与示例代码。
输出按红绿重构流程组织的测试与实现示例,包含接口测试、服务层 mock、最小可运行代码与项目结构。
我有一个基于 Camel 的 Quarkus 事件处理服务,消费消息时会重复入库。请用 TDD 方法先编写能复现问题的测试,再给出修复方案,包含 Camel 测试、Mockito 模拟与回归测试。
输出缺陷复现测试、修复思路与回归测试用例,帮助验证重复入库问题已被可靠解决。
请针对一个已有的 Quarkus 3.x 服务提出 TDD 驱动的重构方案:识别可重构点,补充 JUnit 5、Mockito 和 REST Assured 测试,并配置 JaCoCo 生成覆盖率报告,目标覆盖率 80% 以上。
输出分步骤重构计划、测试补充建议、JaCoCo 配置示例及覆盖率提升路径。
TDD guidance for Quarkus 3.x services with 80%+ coverage (unit + integration). Optimized for event-driven architectures with Apache Camel.
Follow this structured approach for comprehensive, readable tests:
@ExtendWith(MockitoExtension.class)
@DisplayName("OrderService Unit Tests")
class OrderServiceTest {
@Mock
private OrderRepository orderRepository;
@Mock
private EventService eventService;
@Mock
private FulfillmentPublisher fulfillmentPublisher;
@InjectMocks
private OrderService orderService;
private CreateOrderCommand validCommand;
@BeforeEach
void setUp() {
validCommand = new CreateOrderCommand(
"customer-123",
List.of(new OrderLine("sku-123", 2))
);
}
@Nested
@DisplayName("Tests for createOrder")
class CreateOrder {
@Test
@DisplayName("Should persist order and publish fulfillment event")
void givenValidCommand_whenCreateOrder_thenPersistsAndPublishes() {
// ARRANGE
doNothing().when(orderRepository).persist(any(Order.class));
// ACT
OrderReceipt receipt = orderService.createOrder(validCommand);
// ASSERT
assertThat(receipt).isNotNull();
assertThat(receipt.customerId()).isEqualTo("customer-123");
verify(orderRepository).persist(any(Order.class));
verify(fulfillmentPublisher).publishAsync(receipt);
verify(eventService).createSuccessEvent(receipt, "ORDER_CREATED");
}
@Test
@DisplayName("Should reject missing customer id")
void givenMissingCustomerId_whenCreateOrder_thenThrowsBadRequest() {
// ARRANGE
CreateOrderCommand invalid = new CreateOrderCommand("", validCommand.lines());
// ACT & ASSERT
WebApplicationException exception = assertThrows(
WebApplicationException.class,
() -> orderService.createOrder(invalid)
);
assertThat(exception.getResponse().getStatus()).isEqualTo(400);
verify(orderRepository, never()).persist(any(Order.class));
verify(fulfillmentPublisher, never()).publishAsync(any());
}
@Test
@DisplayName("Should record error event when persistence fails")
void givenPersistenceFailure_whenCreateOrder_thenRecordsErrorEvent() {
// ARRANGE
doThrow(new PersistenceException("database unavailable"))
.when(orderRepository).persist(any(Order.class));
// ACT & ASSERT
PersistenceException exception = assertThrows(
PersistenceException.class,
() -> orderService.createOrder(validCommand)
);
assertThat(exception.getMessage()).contains("database unavailable");
verify(eventService).createErrorEvent(
eq(validCommand),
eq("ORDER_CREATE_FAILED"),
contains("database unavailable")
);
verify(fulfillmentPublisher, never()).publishAsync(any());
}
@Test
@DisplayName("Should reject null commands")
void givenNullCommand_whenCreateOrder_thenThrowsNullPointerException() {
// ACT & ASSERT
assertThrows(
NullPointerException.class,
() -> orderService.createOrder(null)
);
verify(orderRepository, never()).persist(any(Order.class));
}
}
}
givenX_whenY_thenZ for clarity…
召集四方视角进行结构化分歧讨论,辅助复杂决策与取舍判断。
帮助用户搭建 WireGuard VPN、配置客户端并安全远程访问家庭网络。
读取计划文档并拆解步骤,生成可直接粘贴的 /orchestrate 链式提示词
为 Spring Boot 与 Quarkus 服务生成并统一应用 Java 编码规范。
帮助你设计 Quarkus 3 后端架构模式,覆盖消息、REST、数据访问与异步处理。
自动生成测试场景并分析代理执行过程,量化技能与规则遵循率。
帮助你为 Spring Boot 项目实施测试驱动开发,覆盖新增、修复与重构场景
为 Quarkus 项目执行发布前验证闭环,涵盖构建、测试、扫描与差异审查。
用测试驱动开发流程编写新功能、修复缺陷并安全重构代码。
帮助开发者用 Kotest、MockK 与协程测试构建高质量 Kotlin 测试体系。
帮助 AI 在隔离工作区运行 Jest/TypeScript 测试,支持测试驱动开发流程。
帮助开发者用先写测试再实现代码的方式提升质量与可维护性。