单元测试开发计划
进度总览
| 日期 |
内容 |
测试数 |
| 2026-07-27 |
P0 全部 + P1 #4 |
新增 8 个 |
| 2026-07-27 |
清理 9 个静态内容测试 |
删除 9 个 |
| 2026-07-27 |
修复预存失败 |
修复 7 个 |
| 当前 |
服务层 13 全过,Web 层 103 全过 |
116 测试,0 失败 |
现有测试评估
现有测试全部集中在 FeatureRegistry.ResolveTemplate(模板选择算法),其他核心函数覆盖率 0%。测试模式存在以下问题:
- 依赖实现细节:测试检查具体的模板名(如
std_face_recognition_stream),改配置就失败
- 弱断言:部分测试只检查错误,不验证输出正确性
- 缺乏端到端:没有测试从输入到输出的完整业务流程
- 无数据隔离:
BuildPipeline 依赖 SQLite、Agent、Registry,难以单独测试
测试原则
- 面向功能行为,不面向实现细节
- 验证给定输入产生预期输出
- 测试边界条件(空输入、重复、中文)
- 测试相互独立,可并行运行
计划
P0 — 直接造成过生产问题的函数 ✅
| # |
函数 |
测试点 |
状态 |
| 1 |
deriveSafeInstanceName |
ASCII名原样返回、中文名生成 hash 前缀 |
✅ |
| 2 |
cleanSourceNames |
去重、去空格、空元素过滤、排序 |
✅ |
| 3 |
BuildPipeline |
创建识别单元、去重、空源保护 |
✅ |
P1 — 核心业务流程
| # |
函数 |
测试点 |
状态 |
| 4 |
actionConsoleSave |
功能选择+source合并→批量下发 |
✅ |
| 5 |
actionWizardApply + apiWizardDeviceInfo |
设备选择、通道加载 |
⬜ |
| 6 |
injectIntegrationsIntoConfig |
alarm 注入、storage 注入 |
⬜ |
P2 — 辅助函数
| # |
函数 |
测试点 |
状态 |
| 7 |
ResolveChannelToSource |
通道名→视频源名、_alarm_后缀剥离 |
⬜ |
| 8 |
SaveVideoSourceAsset 新签名 |
新建、改名、冲突检测 |
⬜ |