0

我正在编写一个 Android JUnit 测试,它遍历 MotionEvents 列表并将它们分派到被测活动。对于大多数事件,我可以只使用 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 直接单击 Spinner,但这不是长期需要的。有什么建议么?

4

1 回答 1

0

因此,也许您可​​以在 Activity 级别上执行调度事件,例如传递为 x,y 的微调器中心(Robotium 这样做,但通过 Instrumentation 而不是通过活动传递motionEvent)。

于 2013-03-15T09:18:44.630 回答