140 lines
3.0 KiB
Markdown
140 lines
3.0 KiB
Markdown
# 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)功能
|