refactor(module): 改进模块注册表同名模块处理逻辑 refactor(plugin): 优化插件加载器依赖检查机制 refactor(event): 重构事件总线监听器添加顺序逻辑 build: 添加测试构建选项和配置 docs: 添加测试套件README文档 |
||
|---|---|---|
| .. | ||
| README.md | ||
| main.cpp | ||
| test_context.cpp | ||
| test_event_bus.cpp | ||
| test_module_registry.cpp | ||
| test_plugin_loader.cpp | ||
| test_timer_module.cpp | ||
| xmake.lua | ||
README.md
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+ |
构建和运行
构建测试
# 配置并构建测试
xmake f --tests=y
xmake
# 或者显式指定平台
xmake f -p mingw --tests=y
xmake
运行测试
# 运行所有测试
xmake run extra2d_tests
# 或者在构建目录中直接运行
./build/mingw/x86_64/debug/extra2d_tests.exe
测试覆盖范围
TimerModule 测试
- 基础属性和生命周期
- 一次性定时器(scheduleOnce)
- 重复定时器(scheduleRepeat)
- 每帧更新定时器(scheduleUpdate)
- 暂停和恢复功能
- 时间缩放效果
- 多定时器管理
- 边界条件处理
EventBus 测试
- 基础事件广播
- 多监听器支持
- 监听器启用/禁用
- 带参数事件
- 不同事件类型
- 监听器生命周期(RAII)
- 输入事件(键盘、鼠标、触摸)
- 窗口事件
- 游戏手柄事件
- 性能测试
ModuleRegistry 测试
- 基础注册/注销操作
- 重复注册处理
- 按类型获取模块
- 初始化和关闭顺序
- 优先级排序
- 空注册表处理
PluginLoader 测试
- 基础注册/卸载操作
- 插件加载和卸载
- 依赖关系解析
- 加载顺序验证
- 缺失依赖处理
- 循环依赖处理
- 复杂依赖图
Context 集成测试
- 创建和销毁
- 初始化和关闭
- 时间推进
- 停止请求
- 组件访问(模块、插件、定时器)
- 事件广播
- 多 Context 支持
- 定时器集成
- 完整生命周期
- 性能测试
添加新测试
使用 TEST 宏添加新测试:
#include "test_framework.h"
#include <your_module.h>
using namespace extra2d;
using namespace extra2d::test;
TEST(SuiteName, TestName) {
// 测试代码
ASSERT_EQ(expected, actual);
ASSERT_TRUE(condition);
ASSERT_NOT_NULL(ptr);
}
断言宏
ASSERT_TRUE(expr)- 断言表达式为 trueASSERT_FALSE(expr)- 断言表达式为 falseASSERT_EQ(expected, actual)- 断言相等ASSERT_NE(expected, actual)- 断言不相等ASSERT_NULL(ptr)- 断言指针为 nullASSERT_NOT_NULL(ptr)- 断言指针不为 nullASSERT_THROW(expr, ExceptionType)- 断言抛出异常ASSERT_NO_THROW(expr)- 断言不抛出异常
注意事项
- 测试使用静态注册,自动发现并运行
- 每个测试用例独立运行,互不影响
- 测试框架会捕获异常并报告错误
- 支持测试跳过(skip)功能