UT代码规范
本文档定义 Runtime 仓 UT 代码的硬性规范,用于补充 UT用例开发指导.md 中偏方法论和设计层面的内容。
一、断言规范
规则 1:每个测试用例必须有有效断言
- 每个测试用例必须至少包含一条有效的
EXPECT或ASSERT。 - 禁止只调用接口、不校验结果的测试代码。
规则 2:断言必须覆盖关键可观察结果
- 除返回值外,还应校验与场景直接相关的出参、状态变化、副作用、回调、文件或目录结果。
- 对失败场景,必须校验错误码、错误状态或关键保护行为,而不是只断言“执行结束”。
二、mock 与全局状态规范
规则 3:mock 对象必须在测试退出时 verify 或 reset
- 每个测试类都应在
TearDown、TearDownTestCase或等价收口点完成 mock 清理。 - 不得让 mock 状态泄漏到后续用例。
规则 4:修改全局状态后必须恢复
- 如果测试修改了 SoC 类型、device、环境变量、单例状态、静态缓存、全局指针或成员指针,退出时必须恢复原值。
- 测试代码不得依赖其他测试先行设置某个全局状态。
三、测试隔离规范
规则 5:测试用例之间不得互相依赖
- 每个测试必须独立构造输入、目录、配置和上下文。
- 不得依赖执行顺序,也不得假设前一个测试已创建临时文件、目录或注册状态。
规则 6:临时文件和目录必须清理
- 使用
/tmp、相对路径目录或临时文件时,必须有清理逻辑。 - 路径命名应带模块或用例特征,避免与其他用例冲突。
四、可维护性规范
规则 7:减少直接访问私有成员
- 优先通过公开接口校验行为。
- 只有在没有合理替代方案时,才使用
#define private public或#define protected public。
规则 8:减少在 UT 中直接调用 SetChipType
- 如果必须调用,应同时说明原因,并在测试退出时恢复状态。
规则 9:命名与目录风格必须保持一致
- 新增测试文件命名应遵循所在目录既有风格。
- 测试类名、用例名和辅助文件名应能表达被测对象、场景和预期行为。