# 完成对话框自动关闭功能 - 测试指南 ## 快速测试步骤 ### 1. 启动应用 ```bash cd PetWashControl dotnet run ``` ### 2. 完整流程测试 1. 在待机界面点击"请取走宠物"按钮 2. 选择任意套餐(如"基础清洗") 3. 点击"开始洗护" 4. 等待洗护流程完成(约2-3分钟) 5. 观察完成对话框 ### 3. 快速模拟测试 如果想快速测试对话框功能,可以临时修改代码: **临时修改 MainViewModel.cs:** 在 `StartWashingCommand` 方法中,找到调用 `SimulateWashingProcessAsync()` 的地方, 直接调用 `CompleteWashingAsync()` 来快速触发完成对话框。 ```csharp // 临时测试代码 await CompleteWashingAsync(); return; ``` ### 4. 验证清单 #### 对话框显示 - [ ] 对话框居中显示在屏幕中央 - [ ] 显示绿色对勾图标 - [ ] 显示"清洗完成!"文本 - [ ] 显示"感谢使用无人自动洗宠机"文本 - [ ] 显示倒计时文本"30秒后自动返回首页" - [ ] 显示蓝色"确定"按钮 #### 倒计时功能 - [ ] 倒计时从30秒开始 - [ ] 每秒递减1秒 - [ ] 文本实时更新(29秒、28秒...) - [ ] 倒计时到0秒时自动关闭对话框 #### 手动关闭功能 - [ ] 点击"确定"按钮立即关闭对话框 - [ ] 倒计时停止 - [ ] 不等待30秒 #### 关闭后行为 - [ ] 对话框关闭后自动返回待机界面 - [ ] 显示轮播图 - [ ] 显示"请取走宠物"按钮 - [ ] 温度显示正常 - [ ] 液位显示正常 #### UI样式 - [ ] 圆角边框显示正常 - [ ] 阴影效果显示正常 - [ ] 按钮悬停效果正常(颜色变深) - [ ] 整体布局美观 ### 5. 测试场景 #### 场景1:自动关闭 1. 完成洗护流程 2. 不点击任何按钮 3. 等待30秒 4. 验证对话框自动关闭并返回首页 #### 场景2:手动关闭 1. 完成洗护流程 2. 在倒计时期间点击"确定"按钮 3. 验证对话框立即关闭并返回首页 #### 场景3:多次测试 1. 重复执行洗护流程3次 2. 每次使用不同的关闭方式(自动/手动) 3. 验证每次都能正常工作 ### 6. 性能验证 - [ ] 对话框打开速度快(<100ms) - [ ] 倒计时更新流畅,无卡顿 - [ ] 关闭后无内存泄漏 - [ ] 定时器正确停止 ### 7. 异常情况测试 #### 测试1:快速点击 - 在对话框显示后立即快速点击"确定"按钮多次 - 验证不会出现异常 #### 测试2:窗口拖动 - 尝试拖动对话框(应该无法拖动,因为设置了居中且无标题栏) - 验证对话框保持居中 #### 测试3:Alt+F4关闭 - 按下 Alt+F4 尝试关闭对话框 - 验证对话框正常关闭并返回首页 ### 8. 日志验证 检查日志文件,确认以下信息: ``` 清洗完成,订单ID: xxx 订单流程完成 ``` ### 9. 数据库验证 检查订单状态是否正确更新为"已完成": ```bash # 如果使用SQLite sqlite3 PetWash.Api/petwash.db "SELECT * FROM Orders ORDER BY CreatedAt DESC LIMIT 1;" ``` 验证最新订单的 Status 字段为 "Completed"。 ### 10. MQTT消息验证 如果启用了MQTT,验证是否发送了完成消息: ```json { "status": "completed", "orderId": "xxx", "timestamp": "2026-02-27T..." } ``` ## 预期结果 ✅ 所有测试项通过 ✅ 对话框显示美观 ✅ 倒计时功能正常 ✅ 自动关闭功能正常 ✅ 手动关闭功能正常 ✅ 返回首页功能正常 ✅ 无异常或错误 ## 问题排查 ### 问题1:对话框不显示 - 检查 MainViewModel.cs 中是否正确调用了 `new Views.CompletionDialog()` - 检查 XAML 文件是否正确编译 ### 问题2:倒计时不更新 - 检查 DispatcherTimer 是否正确启动 - 检查 Tick 事件是否正确绑定 ### 问题3:不能自动关闭 - 检查倒计时逻辑中的 Close() 方法是否被调用 - 检查是否有异常阻止了关闭 ### 问题4:关闭后不返回首页 - 检查 CompleteWashingAsync 方法中的 BackToIdle() 调用 - 检查 CurrentOrder 和 SelectedPackage 是否正确清空 ## 成功标准 - 对话框在洗护完成后正确显示 - 倒计时从30秒准确递减到0秒 - 30秒后自动关闭并返回首页 - 点击"确定"按钮立即关闭并返回首页 - UI美观,用户体验良好 - 无内存泄漏或性能问题 ## 测试完成时间 预计测试时间:10-15分钟