4.5 KiB
4.5 KiB
测试指南
🎯 测试概览
本项目包含完整的测试套件,覆盖核心系统功能。
测试类型
- 属性测试:使用随机数据验证通用属性(每个测试 50-100 次迭代)
- 单元测试:验证特定功能和边界情况
- 集成测试:测试系统间的交互
快速测试
运行所有测试(推荐)
- 在 Godot 编辑器中打开
tests/RunAllTests.tscn - 按 F6 运行当前场景
- 查看控制台输出,所有测试应该显示 ✅ PASSED
- 测试完成后窗口会自动关闭
运行单个测试
消息协议测试:
- 打开
tests/TestRunner.tscn - 按 F6
- 预期输出:
[Property Test] Serialization Roundtrip Result: 100/100 passed ✅ PASSED [Unit Test] Message Creation ✅ PASSED [Unit Test] Message Validation ✅ PASSED
游戏状态管理器测试:
- 打开
tests/TestGameStateManager.tscn - 按 F6
- 预期输出:
[Unit Test] Initial State ✅ PASSED [Unit Test] State Transitions ✅ PASSED [Unit Test] State Change Signal ✅ PASSED [Unit Test] Data Persistence ✅ PASSED [Unit Test] Data Serialization ✅ PASSED
角色数据测试:
- 打开
tests/TestCharacterData.tscn - 按 F6
- 预期输出:
[Property Test] Character ID Uniqueness Result: 100 characters created, 100 unique IDs ✅ PASSED [Unit Test] Character Creation ✅ PASSED [Unit Test] Name Validation ✅ PASSED [Unit Test] Data Validation ✅ PASSED [Unit Test] Position Operations ✅ PASSED [Unit Test] Serialization Roundtrip ✅ PASSED
测试主游戏场景
运行主场景查看基础系统初始化:
- 打开
scenes/Main.tscn - 按 F5 运行项目
- 预期控制台输出:
NetworkManager initialized GameStateManager initialized Initial state: LOGIN No saved player data found AI Town Game - Main scene loaded Godot version: 4.5.1-stable Initializing game systems...
测试覆盖
已测试的功能
✅ 消息协议 (test_message_protocol.gd)
- 属性测试:数据序列化往返(100次迭代)
- 单元测试:消息创建(所有类型)
- 单元测试:消息验证
✅ 游戏状态管理 (test_game_state_manager.gd)
- 单元测试:初始状态
- 单元测试:状态转换(LOGIN → CHARACTER_CREATION → IN_GAME → DISCONNECTED)
- 单元测试:状态变化信号
- 单元测试:数据持久化(保存/加载)
- 单元测试:JSON 序列化
✅ 角色数据模型 (test_character_data.gd)
- 属性测试:角色 ID 唯一性(100次迭代)
- 单元测试:角色创建
- 单元测试:名称验证(长度、空白检查)
- 单元测试:数据验证
- 单元测试:位置操作
- 单元测试:序列化往返
✅ 角色控制器 (test_character_controller.gd)
- 属性测试:碰撞检测(100次迭代)
- 属性测试:位置更新同步(100次迭代)
- 属性测试:角色移动能力(100次迭代)
✅ 输入处理器 (test_input_handler.gd)
- 属性测试:设备类型检测(100次迭代)
- 单元测试:键盘输入响应
- 单元测试:输入信号
测试统计
- 测试套件: 5 个
- 属性测试: 6 个(各 100 次迭代)
- 单元测试: 18 个
- 总测试迭代: 600+ 次
故障排除
如果测试失败
- 检查控制台输出:查找 "FAILED" 或 "Assertion failed" 消息
- 查看错误详情:失败的测试会显示具体的断言信息
- 重新运行:某些测试(如 ID 唯一性)使用随机数,可以重新运行确认
常见问题
Q: 看不到测试输出? A: 确保 Godot 的输出面板是打开的(视图 → 输出)
Q: 测试运行后立即关闭? A: 这是正常的,查看输出面板的历史记录
Q: 某个测试一直失败? A: 检查该测试文件的代码,可能需要调整
下一步
测试通过后,你可以:
- 游戏测试:运行
scenes/TestGameplay.tscn测试游戏功能 - 启动服务器:
cd server && yarn dev启动多人服务器 - 继续开发:参考
.kiro/specs/godot-ai-town-game/tasks.md
测试文件位置
tests/
├── RunAllTests.tscn # 运行所有测试
├── RunPropertyTests.tscn # 运行属性测试
├── TestGameplay.tscn # 游戏功能测试
├── test_*.gd # 测试脚本
└── TEST_GUIDE.md # 本文档