Как я могу юнит тестовые жесты в Android? - PullRequest
1 голос
/ 20 октября 2010

Я хочу протестировать действие смахивания влево / вправо на экране в Android, но я не смог найти никакой документации по нему.Кто-нибудь может протянуть руку?Можно ли это сделать?

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Обычно касание выполняет действие, и вы будете проверять действие, а не само касание.

0 голосов
/ 01 марта 2015

Я нашел ваш вопрос, пытаясь научиться делать то же самое для точно такого же типа жеста.Мне удалось запустить довольно чистые модульные тесты, используя следующий подход.Другими словами, юнит-тест View.OnTouchListener.onTouch(View v, Event event) функция.

Вот как я смог "насмехаться" над View и Event, чтобы запустить 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);
    }
}
...