1

我想对 Android 屏幕上的向左/向右滑动操作进行单元测试,但我找不到任何文档。任何人都可以伸出援助之手吗?甚至可以做到吗?

4

2 回答 2

2

通常,触摸会执行一个动作,您将测试该动作,而不是触摸本身。

于 2010-10-20T12:01:03.023 回答
0

我发现您的问题试图学习如何为完全相同类型的手势做完全相同的事情。我能够使用以下方法运行非常纯粹的单元测试。换句话说,单元测试View.OnTouchListener.onTouch(View v, Event event)功能。

这是我如何能够“模拟” ViewandEvent为了运行onTouch

import android.os.Looper;
import android.test.mock.MockContext;
import android.view.MotionEvent;
import android.view.ViewStub;
import junit.framework.TestCase;

public class SwipeDetectorTest extends TestCase {
    public void testOnTouch() throws Exception {
         class MyMockContext extends MockContext {
            public Looper getMainLooper() {
                return Looper.getMainLooper();
            }
        }
        MyMockContext context = new MyMockContext();
        View v = new ViewStub(context);
        int x = 0; int y = 0;

        // simulated down event
        MotionEvent event = 
            MotionEvent.obtain(1, 0, MotionEvent.ACTION_DOWN, x, y, 0);
        SwipeDetector swipeDetector = new SwipeDetector();
        assertFalse(swipeDetector.onTouch(v, event));

        x = 30; y = 0;
        event = 
           MotionEvent.obtain(1, 1, MotionEvent.ACTION_MOVE, x, y, 0);
        boolean action = swipeDetector.onTouch(v, event);
        assertTrue(action);

        boolean result = swipeDetector.getSwipeHorizontal()
            .equals(SwipeDetector.Action.LeftToRight);
        assertTrue(result);
    }
}
于 2015-02-28T21:41:26.403 回答