0

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 を使用していますが、これは長期的には望ましくありません。助言がありますか?

4

1 に答える 1

0

したがって、スピナーのインスタンスの中心のx、yとして渡すアクティビティレベルでイベントをディスパッチすることができます(Robotiumはそれを行いますが、アクティビティではなくインストルメンテーションを介してmotionEventを渡します)。

于 2013-03-15T09:18:44.630 に答える