0

저는 Espresso를 사용하여 응용 프로그램을 테스트하고 있으므로 RecyclerView에서 끌어서 놓기 동작을 테스트해야합니다. 불행히도 에스프레소에서는 어떤 드래그() 액션도 볼 수 없습니다. 뭔가 빠졌습니까?Espresso에서 drag()와 동등한 Robotium?

답변

1

나는 어떤 Espresso 드래그 옵션을 찾지 못했습니다. swipeUp(), swipeDown(), swipeLwft(), swipeRight()인데이 경우 유용하지 않을 수 있습니다. 이 sendMovement() 방법 Espresso MotionEvents 클래스도하지만, https://groups.google.com/forum/#!msg/android-test-kit-discuss/X3TDJBUT4Ho/OJAOkTOoxGcJ

,하지만 나는 그것을 시도하지 않은 :

또한, Google 그룹에 응답 없음에 문제가있다. 아래

를 사용하여 코드 :

또한
public static void drag(Instrumentation inst, float fromX, float toX, float fromY, 
          float toY, int stepCount) { 
     long downTime = SystemClock.uptimeMillis(); 
     long eventTime = SystemClock.uptimeMillis(); 

     float y = fromY; 
     float x = fromX; 

     float yStep = (toY - fromY)/stepCount; 
     float xStep = (toX - fromX)/stepCount; 

     MotionEvent event = MotionEvent.obtain(downTime, eventTime, 
       MotionEvent.ACTION_DOWN, x, y, 0); 
     inst.sendPointerSync(event); 
     for (int i = 0; i < stepCount; ++i) { 
      y += yStep; 
      x += xStep; 
      eventTime = SystemClock.uptimeMillis(); 
      event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x, y, 0); 
      inst.sendPointerSync(event); 
     } 

     eventTime = SystemClock.uptimeMillis(); 
     event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 
     inst.sendPointerSync(event); 
     inst.waitForIdleSync(); 
    } 

에 대한 TouchUtils 읽기 (이미 API (24)에서 사용되지 않음) :

https://developer.android.com/reference/android/test/TouchUtils.html 그것이

+0

감사합니다, 나는이를 구현하기 위해 노력하고있어 도움이 될 것입니다 희망 MotionEvents를 사용하면 당분간 운이 없지만 계속 게시됩니다! –

+0

내 대답은 유익하다. – piotrek1543

+1

MotionEvents를 사용하여 성공하지 못했습니다. (사용자 코드를 사용하여 MotionEvent를 가져 와서 UiController에 적용하여 사용자 정의 ViewAction에서 코드를 사용했습니다.) sleep (1000) 내 드래그 앤 드롭뿐만 아니라 다운 후 긴 언론에서 방아쇠를 당긴다. –