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