Agent SkillsCloudAI-X/claude-workflow-v2 › designing-tests

designing-tests

GitHub

设计并实施代码库测试策略,涵盖单元测试、集成测试及E2E测试。提供测试金字塔模型、多语言框架选型指南及标准化测试模板,助力提升代码覆盖率与质量。

skills/designing-tests/SKILL.md CloudAI-X/claude-workflow-v2

触发场景

添加或改进测试代码 制定测试策略 搭建测试基础设施 调试测试失败

安装

npx skills add CloudAI-X/claude-workflow-v2 --skill designing-tests -g -y
更多选项

不安装直接使用

npx skills use CloudAI-X/claude-workflow-v2@designing-tests

指定 Agent (Claude Code)

npx skills add CloudAI-X/claude-workflow-v2 --skill designing-tests -a claude-code -g -y

安装 repo 全部 skill

npx skills add CloudAI-X/claude-workflow-v2 --all -g -y

预览 repo 内 skill

npx skills add CloudAI-X/claude-workflow-v2 --list

SKILL.md

Frontmatter
{
    "name": "designing-tests",
    "description": "Designs and implements testing strategies for any codebase. Use when adding tests, improving coverage, setting up testing infrastructure, debugging test failures, or when asked about unit tests, integration tests, or E2E testing."
}

Designing Tests

When to Load

  • Trigger: Adding tests, test strategy planning, improving coverage, setting up testing infrastructure
  • Skip: Non-test code changes where testing is not part of the task

Test Implementation Workflow

Copy this checklist and track progress:

Test Implementation Progress:
- [ ] Step 1: Identify what to test
- [ ] Step 2: Select appropriate test type
- [ ] Step 3: Write tests following templates
- [ ] Step 4: Run tests and verify passing
- [ ] Step 5: Check coverage meets targets
- [ ] Step 6: Fix any failing tests

Testing Pyramid

Apply the testing pyramid for balanced coverage:

        /\
       /  \     E2E Tests (10%)
      /----\    - Critical user journeys
     /      \   - Slow but comprehensive
    /--------\  Integration Tests (20%)
   /          \ - Component interactions
  /------------\ - API contracts
 /              \ Unit Tests (70%)
/________________\ - Fast, isolated
                   - Business logic focus

Framework Selection

JavaScript/TypeScript

Type Recommended Alternative
Unit Vitest Jest
Integration Vitest + MSW Jest + SuperTest
E2E Playwright Cypress
Component Testing Library Enzyme

Python

Type Recommended Alternative
Unit pytest unittest
Integration pytest + httpx pytest + requests
E2E Playwright Selenium
API pytest + FastAPI TestClient -

Go

Type Recommended
Unit testing + testify
Integration testing + httptest
E2E testing + chromedp

Test Structure Templates

Unit Test

describe("[Unit] ComponentName", () => {
  describe("methodName", () => {
    it("should [expected behavior] when [condition]", () => {
      // Arrange
      const input = createTestInput();

      // Act
      const result = methodName(input);

      // Assert
      expect(result).toEqual(expectedOutput);
    });

    it("should throw error when [invalid condition]", () => {
      expect(() => methodName(invalidInput)).toThrow(ExpectedError);
    });
  });
});

Integration Test

describe("[Integration] API /users", () => {
  beforeAll(async () => {
    await setupTestDatabase();
  });

  afterAll(async () => {
    await teardownTestDatabase();
  });

  it("should create user and return 201", async () => {
    const response = await request(app)
      .post("/users")
      .send({ name: "Test", email: "test@example.com" });

    expect(response.status).toBe(201);
    expect(response.body.id).toBeDefined();
  });
});

E2E Test

describe("[E2E] User Registration Flow", () => {
  it("should complete registration successfully", async ({ page }) => {
    await page.goto("/register");

    await page.fill('[data-testid="email"]', "new@example.com");
    await page.fill('[data-testid="password"]', "SecurePass123!");
    await page.click('[data-testid="submit"]');

    await expect(page.locator(".welcome-message")).toBeVisible();
    await expect(page).toHaveURL("/dashboard");
  });
});

Coverage Strategy

What to Cover

  • ✅ Business logic (100%)
  • ✅ Edge cases and error handling (90%+)
  • ✅ API contracts (100%)
  • ✅ Critical user paths (E2E)
  • ⚠️ UI components (snapshot + interaction)
  • ❌ Third-party library internals
  • ❌ Simple getters/setters

Coverage Thresholds

{
  "coverageThreshold": {
    "global": {
      "branches": 80,
      "functions": 80,
      "lines": 80,
      "statements": 80
    },
    "src/core/": {
      "branches": 95,
      "functions": 95
    }
  }
}

Test Data Management

Factories/Builders

// factories/user.js
export const userFactory = (overrides = {}) => ({
  id: faker.string.uuid(),
  name: faker.person.fullName(),
  email: faker.internet.email(),
  createdAt: new Date(),
  ...overrides,
});

// Usage
const admin = userFactory({ role: "admin" });

Fixtures

// fixtures/users.json
{
  "validUser": { "name": "Test", "email": "test@example.com" },
  "invalidUser": { "name": "", "email": "invalid" }
}

Mocking Strategy

When to Mock

  • ✅ External APIs and services
  • ✅ Database in unit tests
  • ✅ Time/Date for determinism
  • ✅ Random values
  • ❌ Internal modules (usually)
  • ❌ The code under test

Mock Examples

// API mocking with MSW
import { http, HttpResponse } from "msw";

export const handlers = [
  http.get("/api/users", () => {
    return HttpResponse.json([{ id: 1, name: "John" }]);
  }),
];

// Time mocking
vi.useFakeTimers();
vi.setSystemTime(new Date("2024-01-01"));

Test Validation Loop

After writing tests, run this validation:

Test Validation:
- [ ] All tests pass: `npm test`
- [ ] Coverage meets thresholds: `npm test -- --coverage`
- [ ] No flaky tests (run multiple times)
- [ ] Tests are independent (order doesn't matter)
- [ ] Test names clearly describe behavior

If any tests fail, fix them before proceeding. If coverage is below target, add more tests for uncovered code paths.

# Run tests
npm test

# Run with coverage
npm test -- --coverage

# Run specific test file
npm test -- path/to/test.spec.ts

# Run in watch mode during development
npm test -- --watch

版本历史

  • 4c242af 当前 2026-08-20 08:17

同 Skill 集合

skills/analyzing-projects/SKILL.md
skills/convex-backend/SKILL.md
skills/database-design/SKILL.md
skills/designing-apis/SKILL.md
skills/designing-architecture/SKILL.md
skills/devops-infrastructure/SKILL.md
skills/error-handling/SKILL.md
skills/managing-git/SKILL.md
skills/optimizing-performance/SKILL.md
skills/parallel-execution/SKILL.md
skills/security-patterns/SKILL.md
skills/vercel-react-best-practices/SKILL.md
skills/web-design-guidelines/SKILL.md

元信息

文件数
0
版本
4c242af
Hash
f938123c
收录时间
2026-08-20 08:17

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-09 21:22
浙ICP备14020137号-1 $访客地图$