【发布时间】:2011-08-09 01:02:38
【问题描述】:
是否有可能在应用程序的按键按下和按键按下事件处理程序之间运行测试?我开发2D街机游戏,gameView里面的gameThread处理按键。我写了 JUnit Android 测试项目。 我已经阅读过 this.sendKeys() 的内容,但似乎该方法先向上发送键,然后向下发送信号。
详情: 我将同时使用 - 触摸和非触摸交互。但现在我正在测试
非触摸。于是我写了:
`protected void setUp() throws Exception {
super.setUp();
setActivityInitialTouchMode(false);
_activity = (GameTemplate) getActivity();
<...>
}`
作为测试初始化。
我编写了测试以确保 keyUp 事件处理良好:
`public void testReturnState() {
this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
_instrumentation.waitForIdleSync();
assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_FORWARD));
}`
它工作正常,但我写了另一个测试:
`public void testKeysSimple() {
this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_LEFT));
}`
它失败了,我认为它的发生是因为以下两个原因之一:
1) 程序尚未处理 keyDown 事件;
2) 程序同时处理了 keyDown 和 keyUp 事件
我是测试新手,也许用另一种方式可以更轻松地完成所有工作。请帮帮我。
我尝试在测试中添加重复:
public void testKeysUpDown() {
int t = TSet.skips;
this.sendRepeatedKeys(TSet.keyRepeats,KeyEvent.KEYCODE_DPAD_LEFT);
while(t>0 && !_logic.getSerp().state().equals(SerpentState.SERP_MOVES_LEFT)) t--;
assertTrue(t>0);
}
但它也失败了。
【问题讨论】:
标签: android junit key-events