You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang/testing-requirements.md

184 lines
4.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# CNC机床数据采集系统 - 测试要求规范
## 📋 测试覆盖要求
### 核心原则
1. **100% 方法覆盖**:每个 public/private 方法必须有对应测试
2. **100% 分支覆盖**:每个方法的每个 if/else、switch/case 必须有测试
3. **100% 参数覆盖**:每个方法的参数组合必须测试
4. **边界测试**null、空字符串、最大值、最小值、异常值
---
## 🔧 测试编写标准
### 每个测试文件必须包含
- **构造函数测试**:每个依赖参数的 null 测试
- **正常场景测试**:成功路径的完整测试
- **异常场景测试**:所有可能的异常情况
- **分支覆盖测试**:每个 if/else 的独立测试
- **边界值测试**null、空、极值
### 测试方法命名规范
```
[正常场景]
MethodName_WhenValidInput_ReturnsExpectedResult
[异常场景]
MethodName_WhenNullInput_ThrowsArgumentNullException
[边界测试]
MethodName_WhenEmptyString_ReturnsDefaultValue
MethodName_WhenMaximumValue_ReturnsExpectedValue
```
---
## 🎯 执行流程(必须严格遵守)
### 阶段 1代码修改前
```powershell
# 运行现有测试
dotnet test Haoliang.Tests/Haoliang.Tests.csproj
# 检查结果
# - 所有测试通过 ✅
# - 无编译错误 ✅
```
### 阶段 2代码修改
- 修改任何代码文件
- **禁止提交**:测试不通过的情况下
### 阶段 3代码修改后必须执行
```powershell
# 编译项目
dotnet build Haoliang.sln -c Release
# 运行完整测试套件
dotnet test Haoliang.Tests/Haoliang.Tests.csproj --verbosity normal
# 生成覆盖率报告
dotnet test --collect:"XPlat Code Coverage" --results-directory ./TestResults
```
### 阶段 4验证标准
- ✅ 所有测试通过
- ✅ 编译成功0错误
- ✅ 覆盖率达到要求
- ✅ 无测试失败
### 阶段 5继续下一步
- **测试通过**:提交代码,继续后续任务
- **测试失败**:修复测试或代码,重新执行阶段 3
---
## 🚫 禁止的行为
### ❌ 绝对禁止
- 在测试不通过的情况下提交代码
- 跳过任何方法的测试
- 忽略 if/else 分支的测试
- 不测试异常场景
- 代码修改后不运行测试就继续
---
## 📊 测试文件结构要求
```
Haoliang.Tests/
├── Controllers/
│ ├── SystemControllerTests.cs
│ ├── DeviceControllerTests.cs
│ └── [所有控制器必须有测试]
├── Services/
│ ├── SchedulerServiceTests.cs
│ ├── DeviceCollectionServiceTests.cs
│ └── [所有服务必须有测试]
├── Repositories/
│ └── [所有仓储必须有测试]
└── Middleware/
└── [所有中间件必须有测试]
```
---
## 🔍 验证命令
### 运行所有测试
```powershell
cd D:\opencode\haoliang
dotnet test Haoliang.Tests/Haoliang.Tests.csproj --verbosity normal
```
### 生成覆盖率报告
```powershell
cd D:\opencode\haoliang
dotnet test --collect:"XPlat Code Coverage" --results-directory ./TestResults
```
### 查看测试结果
```powershell
# 测试通过
Total: XX, Passed: XX, Failed: 0, Skipped: 0
# 覆盖率报告
Line coverage: 100%
Branch coverage: 100%
Method coverage: 100%
```
---
## ✅ 每次代码修改的检查清单
修改代码前:
- [ ] 运行 `dotnet test`,确保现有测试全部通过
- [ ] 确认没有编译警告或错误
修改代码后:
- [ ] 运行 `dotnet build`,确保编译成功
- [ ] 运行 `dotnettest`,确保所有测试通过
- [ ] 检查测试覆盖率,确保达到要求
- [ ] **测试不通过禁止提交代码**
提交代码前:
- [ ] 确认所有测试通过
- [ ] 确认编译无错误
- [ ] 确认覆盖率达标
---
## 📝 优先级测试
### 高优先级(必须立即完成)
1. SystemControllerControllerTests.cs - 问题 1 的验证测试
2. SchedulerServiceTests.cs - 问题 1 的服务测试
### 中优先级
3. DeviceControllerTests.cs
4. DeviceCollectionServiceTests.cs
5. 其他控制器和服务测试
### 低优先级
6. Repositories 测试
7. Middleware 测试
---
## 🎯 执行顺序
1. 创建高优先级测试文件
2. 运行测试套件
3. 验证 100% 覆盖率
4. 修复任何失败的测试
5. 重复直到所有测试通过
---
**版本**: 1.0
**最后更新**: 2026-04-15
**状态**: 已生效,所有代码修改必须遵守