feat: DevicePlugin Task4 — 7个集成测试(MockBackend+序列化) 总计73测试通过

This commit is contained in:
showen
2026-03-13 06:48:36 +08:00
parent 05235f5686
commit 1827310dca
5 changed files with 283 additions and 1 deletions

View File

@@ -2267,3 +2267,47 @@ Task 1 已完成,可以进入 Task 2DevicePlugin 骨架与 Backend trait
Task 3 已完成,可以进入 Task 4集成测试与文档
---
## 2026-03-13 李思琪 — Task 4 完成汇报
### 任务概述
DevicePlugin 阶段一 Task 4集成测试 ✅
### 完成内容
1. **创建 src/plugins/device/tests.rs**,包含 7 个测试用例:
- `test_device_command_serialization` — 测试 12 个 DeviceCommand 变体的 JSON 序列化/反序列化往返
- `test_device_response_serialization` — 测试 6 个 DeviceResponse 变体的 JSON 序列化/反序列化往返
- `test_device_event_serialization` — 测试 6 个 DeviceEvent 变体的 JSON 序列化/反序列化往返
- `test_mock_backend_capabilities` — 验证 MockBackend 返回正确能力列表Display + Backlight
- `test_mock_backend_get_display_info` — 验证 GetDisplayInfo 返回 1280x800 RGB888
- `test_mock_backend_set_sleep_inhibit` — 验证 SetSleepInhibit 返回 Ok
- `test_mock_backend_unsupported_command` — 验证未实现命令返回 Error("not supported")
2. **实现 MockBackend**
- 实现 DeviceBackend trait不依赖真实硬件
- name() 返回 "mock"
- capabilities() 返回 vec![Display, Backlight]
- handle_command() 处理 GetDisplayInfo、SetSleepInhibit、SetBacklight其他返回 Error
3. **修复编译问题**
- 发现 DeviceCapability 缺少 PartialEq trait测试中需要 contains() 比较)
- 在 src/core/message.rs:138 添加 PartialEq 派生
4. **在 src/plugins/device/mod.rs 添加 `#[cfg(test)] mod tests;`**
### 验收结果
- ✅ `cargo check --workspace --all-targets` 零 warning
- ✅ `cargo test --workspace` 全部通过73 个测试,新增 7 个)
- ✅ 测试覆盖所有核心消息类型的序列化
- ✅ MockBackend 实现完整,可用于测试
### 技术要点
- 序列化测试采用往返验证serialize → deserialize → serialize确保 JSON 稳定性
- MockBackend 返回预定义数据,避免依赖 /sys/class/graphics 等硬件路径
- 测试用例覆盖了所有 DeviceCommand/DeviceResponse/DeviceEvent 变体
### 下一步
Task 4 已完成DevicePlugin 阶段一基础框架全部就绪。等待 PM 刘建国向 CEO 汇报。