Extra2D/tests/README.md

140 lines
3.0 KiB
Markdown
Raw Normal View History

# 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 <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)` - 断言表达式为 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功能