重构代码的架构设计,增加测试单元,提高代码可靠性
This commit is contained in:
57
README.md
57
README.md
@@ -55,8 +55,12 @@ DTU-HMI/
|
||||
│ └── Drv/
|
||||
│ ├── menu.c/h
|
||||
│ ├── display.c/h
|
||||
│ ├── lcd.c/h
|
||||
│ ├── Ascii.c/h
|
||||
│ ├── lcd/
|
||||
│ │ ├── lcd.c/h
|
||||
│ │ ├── lcd_draw.c/h
|
||||
│ │ ├── lcd_text.c/h
|
||||
│ │ ├── text_codec.c/h
|
||||
│ │ └── ascii.c/h
|
||||
│ └── utf8_hz12_data.c/h # 由脚本生成
|
||||
└── build/
|
||||
```
|
||||
@@ -657,8 +661,11 @@ void Menu_Route(void)
|
||||
|
||||
具体使用方式可以参考:
|
||||
|
||||
- `src/Drv/Ascii.c`:ASCII/字母数字字符绘制
|
||||
- `src/Drv/lcd.c`:LCD 基础绘制接口
|
||||
- `src/Drv/lcd/ascii.c`:ASCII/字母数字字符绘制
|
||||
- `src/Drv/lcd/lcd.c`:LCD 核心上下文与像素接口
|
||||
- `src/Drv/lcd/lcd_draw.c`:图元绘制接口
|
||||
- `src/Drv/lcd/lcd_text.c`:文本渲染接口
|
||||
- `src/Drv/lcd/text_codec.c`:UTF-8 解码接口
|
||||
|
||||
---
|
||||
|
||||
@@ -677,3 +684,45 @@ void Menu_Route(void)
|
||||
|
||||
- 在关键流程(如 `Menu_Route`、`Menu_Show_Proc`、`remoteDisplay` 收发函数)增加 `#ifdef DEBUG` 包裹的日志
|
||||
- 使用 GDB / VS 调试器在 `main.c`/`menu.c` 等处打断点,单步查看菜单树和坐标计算过程
|
||||
|
||||
---
|
||||
|
||||
## 11. 单元测试与门禁
|
||||
|
||||
### 11.1 运行单元测试
|
||||
|
||||
```powershell
|
||||
# 1. 配置:生成构建文件(如 Makefile)到 build 目录
|
||||
cmake -S . -B build
|
||||
# 2. 编译:真正编译代码
|
||||
cmake --build build
|
||||
# 3. 进行测试
|
||||
# ctest 用 CTest 测试运行器(CMake 自带)
|
||||
# --test-dir build 指定测试目录是 build。
|
||||
# -C Debug 指定运行 Debug 配置下编译出的测试程序。
|
||||
# --output-on-failure 只有测试失败时,才输出该测试的 stdout/stderr 详细信息
|
||||
ctest --test-dir build -C Debug --output-on-failure
|
||||
```
|
||||
|
||||
当前已落地测试集合:
|
||||
|
||||
- `test_smoke`:测试框架烟雾验证
|
||||
- `test_p0_remote_display`:`calc_crc`、`parse_frame` 协议解析核心
|
||||
- `test_p0_utf8_next`:UTF-8 解码边界场景
|
||||
- `test_p0_utf8_hz12_get`:汉字字库二分查找命中/未命中
|
||||
- `test_p1_key`:按键状态消费语义
|
||||
- `test_p1_lcd_basic`:像素读写、填充、反显
|
||||
- `test_p1_menu`:菜单长度计算、层级初始化
|
||||
- `test_p2_tcp_loopback`:TCP 本机回环收发(集成)
|
||||
|
||||
### 11.2 质量门禁(建议)
|
||||
|
||||
- 提交前最低门禁:`ctest --test-dir build -C Debug --output-on-failure` 必须全绿。
|
||||
- 新增或修改纯逻辑函数时,必须同时补充对应单元测试。
|
||||
- 修复缺陷时,必须附带回归测试用例,避免问题再次出现。
|
||||
|
||||
### 11.3 覆盖率目标(阶段性)
|
||||
|
||||
- P0 核心模块(协议解析/字符解析)行覆盖率建议 >= 70%。
|
||||
- P0 核心模块分支覆盖率建议 >= 60%。
|
||||
- P1/P2 模块可按迭代逐步提升,不要求一次到位。
|
||||
|
||||
Reference in New Issue
Block a user