module3
25 分钟

测试用例自动生成

学习进度

当前模块0/6 课
总进度0/36 课
学习时长0 分钟

学习目标

  • 掌握 `/test` 命令生成单元测试和集成测试
  • 学会生成测试数据和 Fixture
  • 理解边界测试和异常路径覆盖策略
  • 使用 TDD 工作流与 Codex 协作开发

202 测试用例自动生成

使用 Codex `/test` 命令自动生成单元测试、集成测试,覆盖边界与异常场景

学习目标

一、`/test` 命令入门

基本用法

# 为当前文件生成单元测试
codex test src/utils/calculator.ts

# 为指定函数生成测试
codex test --func calculateTotal src/services/order.ts

# 生成集成测试
codex test --integration src/api/users.ts

测试框架自动检测

Codex 会自动识别项目使用的测试框架(Jest、Vitest、pytest、JUnit 等),并生成符合项目风格的测试代码。

**💡 提示:** 使用 `codex test --framework jest` 可以显式指定测试框架。

二、生成测试数据与 Fixture

自动生成测试数据

# 为 TypeScript 接口生成 Mock 数据
codex test --generate-fixtures src/types/user.ts

# 为 API 端点生成请求/响应 Fixture
codex test --generate-fixtures --api src/routes/orders.ts

Codex 生成的 Fixture 示例:

// __fixtures__/user.fixture.ts
export const mockUser = {
  id: "usr_abc123",
  name: "张三",
  email: "zhangsan@example.com",
  role: "admin",
  createdAt: "2026-01-15T08:30:00Z",
};

export const mockUserList = [
  mockUser,
  { ...mockUser, id: "usr_def456", name: "李四", role: "editor" },
];

三、边界测试与异常路径

边界条件覆盖

# 生成边界测试用例
codex test --boundary src/utils/validator.ts

Codex 会自动分析参数类型和约束,为以下场景生成测试:

边界类型示例场景
空值`null`、`undefined`、空字符串、空数组
极值最大整数、最小整数、零、负数
长度边界字符串超长、数组越界
类型错误传入错误类型的参数
并发冲突竞态条件、重复请求

异常路径测试

# 生成异常路径测试
codex test --error-paths src/services/payment.ts

四、测试覆盖率分析与填补

覆盖率检查

# 分析当前测试覆盖率
codex test --coverage src/

# 自动填补未覆盖的分支
codex test --fill-gaps --coverage-threshold 80 src/

Codex 会识别未被测试覆盖的代码路径,并自动生成补充测试:

# 输出示例
发现 12 个未覆盖分支:
  - src/services/order.ts:45 (else 分支)
  - src/services/order.ts:78 (catch 块)
  - src/utils/format.ts:23 (默认参数路径)
正在生成补充测试... 完成 12/12

五、TDD 工作流与 Codex

标准 TDD 流程

  1. **Red** — 编写失败的测试:
codex test --write-first src/features/cart.ts
# Codex 根据功能描述先写测试
  1. **Green** — 让测试通过:
codex implement --test src/features/cart.test.ts
# Codex 根据测试用例实现功能代码
  1. **Refactor** — 重构优化:
codex refactor --keep-tests src/features/cart.ts
# 重构同时确保测试仍然通过
**💡 提示:** 使用 `codex test --watch` 进入监视模式,每次保存文件时自动运行相关测试,实现即时反馈。

六、本课总结

**核心要点:**

  • `/test` 支持单元测试和集成测试两种生成模式
  • `--generate-fixtures` 可自动生成类型安全的测试数据
  • `--boundary` 和 `--error-paths` 覆盖边界与异常场景
  • `--fill-gaps` 自动填补测试覆盖盲区
  • Codex 原生支持 Red-Green-Refactor TDD 工作流

**下一步:** 学习文档自动生成 → [203 文档自动生成](module3-203.md)

上一课
下一课