# 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 **状态**: 已生效,所有代码修改必须遵守