# 测试目录说明 ## 目录结构 ``` 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交互测试和业务流程测试 ## 测试框架配置 ### 后端测试配置 ```javascript // jest.config.js (backend) module.exports = { testEnvironment: 'node', testMatch: ['**/test/**/*.test.js'], collectCoverageFrom: ['src/**/*.js'], coverageDirectory: 'coverage', }; ``` ### 前端测试配置 ```javascript // jest.config.js (frontend) module.exports = { testEnvironment: 'jsdom', testMatch: ['**/test/**/*.test.js'], moduleNameMapping: { '^@/(.*)$': '/src/$1', }, }; ``` ## 运行测试 ### 运行所有测试 ```bash npm test ``` ### 运行单元测试 ```bash npm run test:unit ``` ### 运行集成测试 ```bash npm run test:integration ``` ### 运行端到端测试 ```bash npm run test:e2e ``` ### 生成测试覆盖率报告 ```bash npm run test:coverage ``` ## 测试最佳实践 1. **测试命名**: 使用描述性的测试名称,说明测试场景和预期结果 2. **测试隔离**: 每个测试应该独立运行,不依赖其他测试的状态 3. **断言明确**: 使用明确的断言语句,避免模糊的测试验证 4. **错误处理**: 测试应该验证错误情况和边界条件 5. **性能考虑**: 测试运行时间应该合理,避免过长的测试套件 ## 持续集成 测试应该集成到CI/CD流程中: - 每次提交触发测试运行 - 测试失败阻止部署 - 生成测试覆盖率报告 - 集成代码质量检查工具 ## 相关文档 - [Jest 官方文档](https://jestjs.io/) - [Cypress 官方文档](https://docs.cypress.io/) - [Supertest 官方文档](https://github.com/visionmedia/supertest) - [测试驱动开发(TDD)指南](./docs/TDD_GUIDE.md)