是否有可能在应用程序的key down和key up事件处理程序之间运行测试?我开发的2D街机游戏,gameView内部的gameThread处理按键。我写了JUnit安卓测试项目。我读过关于this.sendKeys()的文章,但是看起来这个方法会先发送key up,然后再发送down信号。
详细信息:我将同时使用触摸和非触摸交互。但现在我在测试
非接触。所以我写道:
`受保护的空setUp()抛出异常{
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);
}但它也失败了。
发布于 2011-08-08 22:08:00
如果你使用基于触摸的交互,那么你可以使用MotionEvent.ACTION_MOVE。这是指用户触摸屏幕并在不抬起手指的情况下进行拖动。
代码片段
public boolean onTouch(View v, MotionEvent rawEvent) {
switch (rawEvent.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
// First touch on the screen
break;
case MotionEvent.ACTION_POINTER_DOWN:
// Multi-touch on the screen
break;
case MotionEvent.ACTION_UP:
// Lift from the screen
break;
case MotionEvent.ACTION_POINTER_UP:
// Multi-Lift from the screen
break;
case MotionEvent.ACTION_MOVE:
// Drag on the screen
break;
}
}破折号
https://stackoverflow.com/questions/6983314
复制相似问题