首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在key down和key up事件之间测试

在key down和key up事件之间测试
EN

Stack Overflow用户
提问于 2011-08-08 22:04:27
回答 2查看 1.2K关注 0票数 1

是否有可能在应用程序的key down和key up事件处理程序之间运行测试?我开发的2D街机游戏,gameView内部的gameThread处理按键。我写了JUnit安卓测试项目。我读过关于this.sendKeys()的文章,但是看起来这个方法会先发送key up,然后再发送down信号。

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

非接触。所以我写道:

`受保护的空setUp()抛出异常{

代码语言:javascript
运行
复制
    super.setUp();
    setActivityInitialTouchMode(false);
    _activity = (GameTemplate) getActivity();
    <...>

}`

作为测试初始化。

我写了测试,以确保keyUp事件处理良好:

` `public void testReturnState() {

代码语言:javascript
运行
复制
    this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
    _instrumentation.waitForIdleSync();
assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_FORWARD));

}`

它工作正常,但我写了另一个测试:

` `public void testKeysSimple() {

代码语言:javascript
运行
复制
    this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
    assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_LEFT));

}`

它失败了,我认为它的发生是由于以下两个原因之一:

1)程序尚未处理keyDown事件;

2)程序同时处理了keyDown和keyUp事件

我是测试新手,也许所有的事情都可以用另一种方式做得更容易。请帮帮我。

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

代码语言:javascript
运行
复制
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);
}

但它也失败了。

EN

Stack Overflow用户

发布于 2011-08-08 22:08:00

如果你使用基于触摸的交互,那么你可以使用MotionEvent.ACTION_MOVE。这是指用户触摸屏幕并在不抬起手指的情况下进行拖动。

代码片段

代码语言:javascript
运行
复制
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;
    }

}

破折号

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6983314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档