测试目录说明
目录结构
test/
├── unit/ # 单元测试
├── integration/ # 集成测试
├── e2e/ # 端到端测试
└── README.md # 测试说明文档
测试类型说明
单元测试 (unit)
- 针对单个函数、模块或类的测试
- 使用 Jest 或 Mocha + Chai 框架
- 测试文件命名规范:
[filename].test.js或[filename].spec.js - 覆盖率要求:≥ 80%
集成测试 (integration)
- 测试多个模块之间的交互
- 包括API接口测试、数据库操作测试等
- 使用 Supertest 进行HTTP接口测试
- 使用 Jest 或 Mocha 框架
端到端测试 (e2e)
- 完整的用户流程测试
- 使用 Cypress 或 Playwright 框架
- 模拟真实用户操作场景
- 包括UI交互测试和业务流程测试
测试框架配置
后端测试配置
// jest.config.js (backend)
module.exports = {
testEnvironment: 'node',
testMatch: ['**/test/**/*.test.js'],
collectCoverageFrom: ['src/**/*.js'],
coverageDirectory: 'coverage',
};
前端测试配置
// jest.config.js (frontend)
module.exports = {
testEnvironment: 'jsdom',
testMatch: ['**/test/**/*.test.js'],
moduleNameMapping: {
'^@/(.*)$': '<rootDir>/src/$1',
},
};
运行测试
运行所有测试
npm test
运行单元测试
npm run test:unit
运行集成测试
npm run test:integration
运行端到端测试
npm run test:e2e
生成测试覆盖率报告
npm run test:coverage
测试最佳实践
- 测试命名: 使用描述性的测试名称,说明测试场景和预期结果
- 测试隔离: 每个测试应该独立运行,不依赖其他测试的状态
- 断言明确: 使用明确的断言语句,避免模糊的测试验证
- 错误处理: 测试应该验证错误情况和边界条件
- 性能考虑: 测试运行时间应该合理,避免过长的测试套件
持续集成
测试应该集成到CI/CD流程中:
- 每次提交触发测试运行
- 测试失败阻止部署
- 生成测试覆盖率报告
- 集成代码质量检查工具