← ClaudeAtlas

tdd-workflowlisted

在编写新功能、修复 bug 或重构代码时使用此 skill。强制执行测试驱动开发,覆盖率要求 80% 以上,包括单元测试、集成测试和 E2E 测试。
aldo832/ai-max · ★ 2 · AI & Automation · score 75
Install: claude install-skill aldo832/ai-max
# 测试驱动开发工作流 此 skill 确保所有代码开发遵循 TDD 原则并具有全面的测试覆盖。 ## 何时激活 - 编写新功能或特性 - 修复 bug 或问题 - 重构现有代码 - 添加 API 端点 - 创建新组件 ## 核心原则 ### 1. 代码之前先写测试 始终先写测试,然后实现代码使测试通过。 ### 2. 覆盖率要求 - 最低 80% 覆盖率(单元 + 集成 + E2E) - 覆盖所有边界情况 - 测试错误场景 - 验证边界条件 ### 3. 测试类型 #### 单元测试 - 独立的函数和工具 - 组件逻辑 - 纯函数 - 辅助函数和工具 #### 集成测试 - API 端点 - 数据库操作 - 服务交互 - 外部 API 调用 #### E2E 测试(Playwright) - 关键用户流程 - 完整工作流 - 浏览器自动化 - UI 交互 ## TDD 工作流步骤 ### 步骤 1:编写用户旅程 ``` 作为 [角色],我想要 [动作],以便 [收益] 示例: 作为用户,我想要语义搜索市场, 以便即使没有精确关键词也能找到相关市场。 ``` ### 步骤 2:生成测试用例 为每个用户旅程创建全面的测试用例: ```typescript describe('Semantic Search', () => { it('returns relevant markets for query', async () => { // 测试实现 }) it('handles empty query gracefully', async () => { // 测试边界情况 }) it('falls back to substring search when Redis unavailable', async () => { // 测试回退行为 }) it('sorts results by similarity score', async () => { // 测试排序逻辑 }) }) ``` ### 步骤 3:运行测试(它们应该失败) ```bash npm test # 测试应该失败 - 我们还没有实现 ``` ### 步骤 4:实现代码 编写最少的代码使测试通过: ```typescript // 由测试指导的实现 export async function searchMarkets(query: string) { // 这里是实现 } ``` ### 步骤 5:再次运行测试 ```bash npm test # 测试现在应该通过 ``` ### 步骤 6:重构 在保持测试绿色的情况下改进代码质量: - 消除重复 - 改进命名 - 优化性能 - 增强可读性 ### 步骤 7:验证覆盖率 ```bash npm run test:coverage # 验证达到 80%+ 覆盖率 ``` ## 测试模式 ### 单元测试模式(Jest/Vitest) ```typescript import { render, screen, fireEvent } from '@testing-library/react' import { Button } from './Button' describe('Button Component', () => { it('renders with correct text', ()