| 版本 | 日期 | 描述 | 作者 |
|---|---|---|---|
| 3.0 | 2025-12-26 | 重构为概述文档,拆分详细规范到独立文档 | James (Claude Code) |
| 2.10 | 2025-12-12 | 添加使用共享测试工具处理复杂组件的规范 | James (Claude Code) |
| 2.9 | 2025-12-12 | 添加测试用例编写规范,基于订单管理集成测试经验 | James (Claude Code) |
| 2.8 | 2025-11-11 | 更新包测试结构,添加模块化包测试策略 | Winston |
| 2.7 | 2025-11-09 | 更新为monorepo测试架构,清理重复测试文件 | James |
本文档是D8D Starter项目的测试策略概述,定义了整体的测试架构和原则。详细的测试规范请参考各包的专用测试规范文档。
项目采用分层测试架构,遵循测试金字塔模型:
/\
/ \ E2E测试 (Playwright)
/____\ 关键业务流程 100%
/ \
/ \ 集成测试 (Vitest)
/ \ 模块间协作 ≥60%
/____________\
/ \ 单元测试 (Vitest/Jest)
/________________\ 独立单元 ≥80%
| 包类型 | 测试类型 | 主要框架 | 详细规范 |
|---|---|---|---|
| Web UI包 | 组件测试 + 集成测试 + E2E测试 | Vitest + Testing Library + Playwright | Web UI包测试规范 |
| Web Server包 | 集成测试 | Vitest + hono/testing | Web Server包测试规范 |
| 后端模块包 | 单元测试 + 集成测试 | Vitest + TypeORM | 后端模块包测试规范 |
| Mini UI包 | 组件测试 + 集成测试 | Jest + @testing-library/react | Mini UI包测试规范 |
适用包:
适用包:
适用包:
// 测试数据工厂模式
export function createTestUser(overrides = {}): User {
return {
id: 1,
username: 'testuser',
email: 'test@example.com',
createdAt: new Date(),
...overrides
};
}
// 使用示例
const adminUser = createTestUser({ role: 'admin' });
const inactiveUser = createTestUser({ active: false });
# 运行所有测试
cd packages/user-module && pnpm test
# 运行单元测试
pnpm test:unit
# 运行集成测试
pnpm test:integration
# 生成覆盖率报告
pnpm test:coverage
# 运行集成测试
cd packages/server && pnpm test
# 生成覆盖率报告
pnpm test:coverage
# 运行所有测试
cd web && pnpm test
# 运行组件测试
pnpm test:components
# 运行集成测试
pnpm test:integration
# 运行E2E测试
pnpm test:e2e:chromium
# 生成覆盖率报告
pnpm test:coverage
# 进入UI包目录
cd mini-ui-packages/rencai-dashboard-ui
# 运行测试(使用Jest)
pnpm test
| 测试类型 | 最低要求 | 目标要求 | 关键模块要求 |
|---|---|---|---|
| 单元测试 | 70% | 80% | 90% |
| 集成测试 | 50% | 60% | 70% |
| E2E测试 | 关键流程100% | 主要流程80% | - |
# 运行特定测试查看详细信息
pnpm test --testNamePattern "测试名称"
# 显示完整输出
pnpm test --reporter=verbose
# 监听模式(开发时)
pnpm test --watch
# E2E测试失败时先查看页面结构
cat test-results/**/error-context.md
# 使用调试模式
pnpm test:e2e:chromium --debug
// 表单提交失败时,在form onsubmit的第二个参数中加console.debug
form.handleSubmit(handleSubmit, (errors) => console.debug('表单验证错误:', errors))
| 工具 | 版本 | 用途 |
|---|---|---|
| Vitest | 3.2.4 | Web/后端测试运行器 |
| Jest | 最新 | Mini UI包测试运行器 |
| Testing Library | 16.3.0 | React组件测试 |
| Playwright | 1.55.0 | E2E测试 |
| Happy DOM | 最新 | 轻量级DOM环境 |
| hono/testing | 内置 | Hono路由测试 |
| TypeORM | 0.3.20 | 数据库测试 |
| shared-test-util | 1.0.0 | 共享测试基础设施 |
| 日期 | 版本 | 描述 |
|---|---|---|
| 2025-12-26 | 3.0 | 重构为概述文档,拆分详细规范到独立文档 |
| 2025-12-12 | 2.10 | 添加使用共享测试工具处理复杂组件的规范 |
| 2025-12-12 | 2.9 | 添加测试用例编写规范,基于订单管理集成测试经验 |
| 2025-11-11 | 2.8 | 更新包测试结构,添加模块化包测试策略 |
| 2025-11-09 | 2.7 | 更新为monorepo测试架构,清理重复测试文件 |
| 2025-10-15 | 2.6 | 完成遗留测试文件迁移到统一的tests目录结构 |
| 2025-10-14 | 2.5 | 重构测试文件结构,统一到tests目录 |
| 2025-09-20 | 2.4 | 更新版本与主架构文档一致 |
| 2025-09-19 | 1.0 | 初始版本,基于现有测试基础设施 |
文档状态: 正式版 下次评审: 2026-01-26