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

4.2 KiB

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代码修改前

# 运行现有测试
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,确保所有测试通过
  • 检查测试覆盖率,确保达到要求
  • 测试不通过禁止提交代码

提交代码前:

  • 确认所有测试通过
  • 确认编译无错误
  • 确认覆盖率达标

📝 优先级测试

高优先级(必须立即完成)

  1. SystemControllerControllerTests.cs - 问题 1 的验证测试
  2. SchedulerServiceTests.cs - 问题 1 的服务测试

中优先级

  1. DeviceControllerTests.cs
  2. DeviceCollectionServiceTests.cs
  3. 其他控制器和服务测试

低优先级

  1. Repositories 测试
  2. Middleware 测试

🎯 执行顺序

  1. 创建高优先级测试文件
  2. 运行测试套件
  3. 验证 100% 覆盖率
  4. 修复任何失败的测试
  5. 重复直到所有测试通过

版本: 1.0
最后更新: 2026-04-15
状态: 已生效,所有代码修改必须遵守