文档命令库生成测试用例

生成测试用例

为现有代码自动生成全面的测试用例,支持 Jest、Mocha、Vitest 等测试框架,确保代码质量和测试覆盖率。

适用场景

  • 新项目需要建立测试体系
  • 遗留代码缺乏测试覆盖
  • 重构前需要回归测试保护
  • 测试覆盖率不达标需要补充

复制命令

# 基础命令
 src/utils/helper.js 生成完整的单元测试用例
 
# 指定测试框架
使用Jest为所有组件生成测试用例,包含快照测试
 
# 覆盖率导向生成
分析测试覆盖率并为未覆盖的代码生成测试用例
 
# 批量生成
 src/components 目录下所有文件生成对应的测试文件

执行步骤

1. 分析代码结构

Claude Code 会自动:

  • 识别函数、类和模块的导出
  • 分析参数类型和返回值
  • 检测异常处理和边界条件
  • 理解业务逻辑和数据流

2. 生成测试策略

根据代码特点生成:

  • 纯函数:输入输出测试、边界值测试
  • 类方法:构造函数、public方法、状态变更测试
  • React组件:渲染测试、交互测试、props测试
  • 异步函数:Promise/async-await测试、错误处理

3. 创建测试文件

// 自动生成的测试文件示例
import { calculateTotal, validateEmail } from '../utils/helper';
 
describe('helper.js', () => {
  describe('calculateTotal', () => {
    test('should calculate total with tax', () => {
      const result = calculateTotal(100, 0.1);
      expect(result).toBe(110);
    });
 
    test('should handle zero amount', () => {
      const result = calculateTotal(0, 0.1);
      expect(result).toBe(0);
    });
 
    test('should handle negative tax rate', () => {
      expect(() => calculateTotal(100, -0.1))
        .toThrow('Tax rate cannot be negative');
    });
  });
 
  describe('validateEmail', () => {
    test.each([
      ['user@example.com', true],
      ['invalid.email', false],
      ['', false],
      [null, false]
    ])('should validate email %s as %s', (email, expected) => {
      expect(validateEmail(email)).toBe(expected);
    });
  });
});

4. 运行和优化测试

# 运行新生成的测试
npm test
 
# 检查覆盖率
npm test -- --coverage
 
# 如果有失败,让Claude Code修复
npm test -- --verbose

验证命令

# 运行所有测试
npm test
 
# 生成覆盖率报告
npm test -- --coverage --coverageReporters=html
 
# 检查特定文件的测试
npm test -- --testNamePattern="helper.js"

测试生成策略

纯函数测试

  • ✅ 正常输入输出测试
  • ✅ 边界值和极值测试
  • ✅ 异常输入处理测试
  • ✅ 类型检查测试

类和对象测试

  • ✅ 构造函数参数验证
  • ✅ 公共方法行为测试
  • ✅ 状态变更和副作用测试
  • ✅ 继承和多态测试

React 组件测试

  • ✅ 基础渲染测试(快照)
  • ✅ Props 传递和验证
  • ✅ 事件处理和交互
  • ✅ 状态变化和生命周期

异步代码测试

  • ✅ Promise 成功和失败场景
  • ✅ async/await 语法测试
  • ✅ 超时和重试机制
  • ✅ 并发和竞态条件

💡 智能测试生成:Claude Code 会根据代码的复杂度和业务逻辑自动调整测试策略,确保测试的有效性。

高级功能

Mock 和 Stub 生成

// 自动生成的 Mock 示例
jest.mock('../services/api', () => ({
  fetchUser: jest.fn(),
  updateUser: jest.fn()
}));
 
const { fetchUser } = require('../services/api');
 
beforeEach(() => {
  fetchUser.mockClear();
});

集成测试用例

// 自动生成的集成测试
describe('User Service Integration', () => {
  test('should create and retrieve user', async () => {
    const userData = { name: 'John', email: 'john@example.com' };
    const createdUser = await createUser(userData);
    const retrievedUser = await getUser(createdUser.id);
    
    expect(retrievedUser).toMatchObject(userData);
  });
});

覆盖率目标

生成的测试用例通常能达到:

  • 语句覆盖率:90%+
  • 分支覆盖率:85%+
  • 函数覆盖率:95%+
  • 行覆盖率:90%+

风险提示与注意事项

注意事项

  • 生成的测试需要人工审查和调整
  • 某些业务逻辑可能需要更复杂的测试场景
  • Mock 数据应该反映真实的业务场景

最佳实践

  • 先运行测试确保都能通过
  • 检查测试的意义性,避免无效测试
  • 根据业务需求调整测试数据
  • 定期维护和更新测试用例

相关卡片

参考来源

关于我