# Extra2D 测试套件 ## 概述 本测试套件包含对 Extra2D 引擎核心模块的单元测试和集成测试。 ## 测试框架 使用自定义轻量级测试框架,位于 `test_framework.h`。 ### 特性 - 自动测试注册和发现 - 支持测试套件组织 - 丰富的断言宏 - 详细的测试报告 ## 测试文件说明 | 文件 | 描述 | 测试数量 | |------|------|----------| | `test_timer_module.cpp` | 定时器模块测试 | 20+ | | `test_event_bus.cpp` | 事件总线测试 | 20+ | | `test_module_registry.cpp` | 模块注册表测试 | 12+ | | `test_plugin_loader.cpp` | 插件加载器测试 | 15+ | | `test_context.cpp` | Context 集成测试 | 15+ | ## 构建和运行 ### 构建测试 ```bash # 配置并构建测试 xmake f --tests=y xmake # 或者显式指定平台 xmake f -p mingw --tests=y xmake ``` ### 运行测试 ```bash # 运行所有测试 xmake run extra2d_tests # 或者在构建目录中直接运行 ./build/mingw/x86_64/debug/extra2d_tests.exe ``` ## 测试覆盖范围 ### TimerModule 测试 - 基础属性和生命周期 - 一次性定时器(scheduleOnce) - 重复定时器(scheduleRepeat) - 每帧更新定时器(scheduleUpdate) - 暂停和恢复功能 - 时间缩放效果 - 多定时器管理 - 边界条件处理 ### EventBus 测试 - 基础事件广播 - 多监听器支持 - 监听器启用/禁用 - 带参数事件 - 不同事件类型 - 监听器生命周期(RAII) - 输入事件(键盘、鼠标、触摸) - 窗口事件 - 游戏手柄事件 - 性能测试 ### ModuleRegistry 测试 - 基础注册/注销操作 - 重复注册处理 - 按类型获取模块 - 初始化和关闭顺序 - 优先级排序 - 空注册表处理 ### PluginLoader 测试 - 基础注册/卸载操作 - 插件加载和卸载 - 依赖关系解析 - 加载顺序验证 - 缺失依赖处理 - 循环依赖处理 - 复杂依赖图 ### Context 集成测试 - 创建和销毁 - 初始化和关闭 - 时间推进 - 停止请求 - 组件访问(模块、插件、定时器) - 事件广播 - 多 Context 支持 - 定时器集成 - 完整生命周期 - 性能测试 ## 添加新测试 使用 `TEST` 宏添加新测试: ```cpp #include "test_framework.h" #include using namespace extra2d; using namespace extra2d::test; TEST(SuiteName, TestName) { // 测试代码 ASSERT_EQ(expected, actual); ASSERT_TRUE(condition); ASSERT_NOT_NULL(ptr); } ``` ## 断言宏 - `ASSERT_TRUE(expr)` - 断言表达式为 true - `ASSERT_FALSE(expr)` - 断言表达式为 false - `ASSERT_EQ(expected, actual)` - 断言相等 - `ASSERT_NE(expected, actual)` - 断言不相等 - `ASSERT_NULL(ptr)` - 断言指针为 null - `ASSERT_NOT_NULL(ptr)` - 断言指针不为 null - `ASSERT_THROW(expr, ExceptionType)` - 断言抛出异常 - `ASSERT_NO_THROW(expr)` - 断言不抛出异常 ## 注意事项 1. 测试使用静态注册,自动发现并运行 2. 每个测试用例独立运行,互不影响 3. 测试框架会捕获异常并报告错误 4. 支持测试跳过(skip)功能