重构代码的架构设计,增加测试单元,提高代码可靠性

This commit is contained in:
2026-03-23 20:40:04 +08:00
parent c2ce221691
commit a4bf0962b2
31 changed files with 2084 additions and 703 deletions

108
tests/CMakeLists.txt Normal file
View File

@@ -0,0 +1,108 @@
# tests 子工程最低 CMake 版本要求(与主工程保持一致)
cmake_minimum_required(VERSION 3.10)
# 预留:测试通用源码列表(当前未直接使用,可用于后续统一链接)
set(DTU_TEST_COMMON_SOURCES
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
"${CMAKE_SOURCE_DIR}/src/Drv/menu.c"
"${CMAKE_SOURCE_DIR}/src/Drv/display.c"
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
"${CMAKE_SOURCE_DIR}/src/remoteDisplay.c"
)
# 封装测试目标创建逻辑:
# - add_executable: 生成测试可执行文件
# - target_include_directories: 注入项目头文件路径
# - target_link_libraries: 按平台链接系统库
# - add_test: 注册到 CTest支持 ctest 统一执行
function(add_dtu_test test_name)
add_executable(${test_name} ${ARGN})
# 测试目标可见的头文件目录
target_include_directories(${test_name} PRIVATE
"${CMAKE_SOURCE_DIR}/include"
"${CMAKE_SOURCE_DIR}/src"
"${CMAKE_SOURCE_DIR}/src/TCP"
"${CMAKE_SOURCE_DIR}/src/Drv"
)
# 平台差异Windows 需要 ws2_32非 Windows 使用 pthread
if(WIN32)
target_link_libraries(${test_name} PRIVATE ws2_32)
else()
target_link_libraries(${test_name} PRIVATE pthread)
endif()
# 将测试程序注册为 CTest 用例,名称与目标名一致
add_test(NAME ${test_name} COMMAND ${test_name})
endfunction()
# ------------------------------------------------------------
# Smoke 测试:验证测试框架本身可用
# ------------------------------------------------------------
add_dtu_test(test_smoke tests_smoke.c)
# ------------------------------------------------------------
# P0高价值纯逻辑测试
# ------------------------------------------------------------
add_dtu_test(
test_p0_remote_display
test_p0_remote_display.c
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
)
add_dtu_test(
test_p0_utf8_next
test_p0_utf8_next.c
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
)
add_dtu_test(
test_p0_utf8_hz12_get
test_p0_utf8_hz12_get.c
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
)
# ------------------------------------------------------------
# P1业务核心计算/状态流转测试
# ------------------------------------------------------------
add_dtu_test(
test_p1_key
test_p1_key.c
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
)
add_dtu_test(
test_p1_lcd_basic
test_p1_lcd_basic.c
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
)
add_dtu_test(
test_p1_menu
test_p1_menu.c
"${CMAKE_SOURCE_DIR}/src/Drv/display.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_draw.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/lcd_text.c"
"${CMAKE_SOURCE_DIR}/src/Drv/lcd/ascii.c"
"${CMAKE_SOURCE_DIR}/src/Drv/key.c"
)
# ------------------------------------------------------------
# P2集成测试网络回环等
# ------------------------------------------------------------
add_dtu_test(
test_p2_tcp_loopback
test_p2_tcp_loopback.c
"${CMAKE_SOURCE_DIR}/src/TCP/tcp.c"
"${CMAKE_SOURCE_DIR}/src/thread_utils.c"
)