Android 按键下降和按键上升事件之间的测试

Android 按键下降和按键上升事件之间的测试,android,junit,key-events,Android,Junit,Key Events,是否有可能在应用程序的“向下键”和“向上键”事件处理程序之间运行测试?我开发了2D街机游戏,gameView中的gameThread处理按键。我编写了JUnitAndroid测试项目。 我已经读过这个.sendKeys(),但是这个方法似乎是先向上发送key,然后向下发送信号 详情: 我将同时使用触摸和非触摸交互。但现在我在测试 非接触式。于是我写道: `受保护的void setUp()引发异常{ super.setUp(); setActivityInitialTouchMod

是否有可能在应用程序的“向下键”和“向上键”事件处理程序之间运行测试?我开发了2D街机游戏,gameView中的gameThread处理按键。我编写了JUnitAndroid测试项目。 我已经读过这个.sendKeys(),但是这个方法似乎是先向上发送key,然后向下发送信号

详情: 我将同时使用触摸和非触摸交互。但现在我在测试

非接触式。于是我写道:

`受保护的void setUp()引发异常{

    super.setUp();
    setActivityInitialTouchMode(false);
    _activity = (GameTemplate) getActivity();
    <...>
它工作正常,但我编写了另一个测试:

`公共void testkeysimple(){

它失败了,我认为这是因为以下两个原因之一:

1) 程序尚未处理按键事件

2) 程序处理了keyDown和keydup事件

我是测试新手,也许用另一种方法可以更容易地完成。请帮帮我

我尝试在测试中添加重复:

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);
}

但是它也会失败。

如果您使用的是基于触摸的交互,那么您可以使用MotionEvent.ACTION\u 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;
    }

}

Shash

如果您使用的是基于触摸的交互,那么您可以使用MotionEvent.ACTION\u 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;
    }

}

Shash

您需要完全控制发送的事件。

您需要完全控制发送的事件。

我现在正在为非接触事件编写测试。我已经为我的问题提供了详细信息。如上所述,这是我在这里的第一个问题,很抱歉,如果出现问题。我有两个项目:游戏和游戏测试,首先是第二个测试。您的代码是一种无法在测试端运行的方法。不过,也许我不知道一些测试机制。如果是,请告诉我。我现在正在为非接触事件编写测试。我已经为我的问题提供了详细信息。如上所述,这是我在这里的第一个问题,很抱歉,如果出现问题。我有两个项目:游戏和游戏测试,第一个是第二个测试。您的代码是方法,它不能在测试端运行。不过,也许我不知道一些测试机制。如果是,请告诉我。
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;
    }

}