0
我寫一個Android JUnit測試,通過MotionEvents列表進行迭代,並且分派他們到活動測試。對於大多數事件,我只能使用activity.dispatchTouchEvent(MotionEvent)方法。對於對話框,我必須獲取內存中的對話框並直接調用dispatchTouchEvent。我遇到了android.widget.Spinner對象的問題。 dispatchTouchEvent方法似乎被忽略。的Android無法調度觸摸事件,以微調
例如,微調(模式= DIALOG)出現在屏幕上時,測試碼分派與適當的(X,Y)一個MotionEvent座標和動作(ACTION_DOWN接着ACTION_UP):
Spinner spinner = (Spinner) activity.findViewById(R.id.spinnerId);
spinner.dispatchTouchEvent(motionEvent); //returns true, but Spinner has not been touched
View v = spinner.getChildAt(0);
v.dispatchTouchEvent(motionEvent); //returns false, Spinner has not been touched
現在,我使用Robotium直接單擊微調,但不希望長期。有什麼建議麼?
你爲什麼不使用spinner.performClick();而不是spinner.dispatchTouchEvent(motionEvent); ? – maszter 2013-03-13 16:42:31
這樣做是爲了捕獲所有的運動事件。 (例如ACTION_DOWN,ACTION_UP,ACTION_MOVE)。在做出選擇之前,用戶可能會滾動Spinner。 – diggybub 2013-03-14 19:11:41