106 lines
2.4 KiB
Markdown
106 lines
2.4 KiB
Markdown
|
|
# 测试目录说明
|
|||
|
|
|
|||
|
|
## 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
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: {
|
|||
|
|
'^@/(.*)$': '<rootDir>/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)
|