Skip to content
阅读进度

如何给一个设备控制模块写有价值的单元测试? ​

返回 架构与 SDK 目录

标准回答 ​

先列出模块对外承诺的行为,再准备输入与可控依赖,执行操作后检查可观察结果。测试应该说明“需求被满足了”,而不是把实现里的每一行再写一遍。

  • 按 Arrange、Act、Assert 组织:准备、执行、断言;一个测试聚焦一个明确行为。
  • 把时钟、网络、设备接口作为可替换依赖,避免真实时间和随机硬件状态干扰。
  • 修复缺陷前先写能复现它的用例,修复后该用例应稳定通过。

通俗例子 ​

需求规定温度只能是 16–30℃。测试 15、16、30、31 四个边界,再让 Fake 设备返回超时,验证页面状态变为失败、没有误报成功。Fake 只模拟外部设备,真实业务判断仍执行。

深入解释 ​

**Fake 到底替换什么:**Fake 是一个简化、可控制的依赖实现,例如固定返回设备超时。它替换不稳定的外部设备,真正要验证的温度校验与状态转换仍运行。

**怎样判断测试有价值:**把实现故意改成接受越界温度,边界测试应该失败;把失败回包当成成功,状态测试也应该失败。只检查“方法被调用一次”往往不能证明业务结果正确。

易混淆点 ​

测试通过只说明已有断言成立;断言错了、遗漏边界或把业务本身 Mock 掉,都可能是假安心。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。