如何自动化测试LibGDX游戏的输入处理与启动屏切换逻辑
LibGDX启动屏输入响应自动化测试问题
背景与测试需求
我使用Java开发一款基于LibGDX的游戏(该问题同样适用于通用Java应用),需要自动化测试游戏对特定输入序列的响应:
- 已实现两个启动屏:第一个为LibGDX标志屏(
LogoSplashScreen),第二个为开发者署名屏(PresentationSplashScreen) - 每个启动屏的动画逻辑:0.5秒淡入 → 停留2秒 → 0.5秒淡出
- 支持按回车键跳过当前启动屏,快速进入下一界面
需验证的三个测试场景:
- 启动后无任何输入,应用显示
LogoSplashScreen - 按一次回车键后,应用显示
PresentationSplashScreen - 按两次回车键后,应用显示
MainMenuScreen
注:应用本身的功能已正常实现,核心问题是如何将这些手动测试自动化?
已尝试的方法及问题
我尝试了三种方法,但均未达到预期效果:
java.awt.Robot类:该类的Javadoc描述为“为测试自动化、自动演示等需要控制鼠标和键盘的应用生成原生系统输入事件”,用它检测实际像素颜色时表现正常,但生成的KeyEvents无法传递到我的LibGDX应用中。InputEventQueue:尝试向队列传入所有事件后,在应用的InputProcessor上调用drain方法。目前尚未放弃该方案,但存在问题:Lwjgl3Application的构造函数会在同一线程启动主循环,导致无法同步执行测试;即使将构造函数调用包装在独立线程中,仍无法准确得知应用何时进入主循环状态。GdxTestRunner:参考过往类似问题的建议使用该测试运行器,但它通过模拟Lwjgl后端以无头模式包装应用,因无法访问图形资源,实际无法完成屏幕切换的测试。
内容的提问来源于stack exchange,提问作者Ledmington
相关产品推荐
相关产品推荐

