MotionEvents のリストを反復処理し、それらをテスト対象のアクティビティにディスパッチする Android JUnit テストを作成しています。ほとんどのイベントでは、 activity.dispatchTouchEvent(MotionEvent) メソッドを使用できます。ダイアログの場合、メモリ内のダイアログを取得し、dispatchTouchEvent を直接呼び出す必要があります。android.widget.Spinner オブジェクトに問題があります。dispatchTouchEvent メソッドは無視されているようです。
たとえば、Spinner (Mode = DIALOG) が画面に表示され、テスト コードは適切な (x, y) 座標とアクション (ACTION_DOWN の後に ACTION_UP) を指定して MotionEvent をディスパッチしています。
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 を使用していますが、これは長期的には望ましくありません。助言がありますか?