Проблема с Robotium.clickOnMenuItem () - PullRequest
       6

Проблема с Robotium.clickOnMenuItem ()

1 голос
/ 20 сентября 2011

Когда я звоню в Robotium:

solo.clickOnMenuItem("Sync");

иногда я получаю знаменитую ошибку:

09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): android.view.WindowLeaked: активность test.com.activities.ListActivity утекло окно com.android.internal.policy.impl.PhoneWindow $ DecorView @ 461d4660, который был первоначально добавлен здесь 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.ViewRoot. (ViewRoot.java:253) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:148) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.Window $ LocalWindowManager.addView (Window.java:424) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Dialog.show (Dialog.java:241) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): at test.com.activities.ListActivity $ Sincronizacao.onPreExecute (ListActivity.java:272) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.AsyncTask.execute (AsyncTask.java:391) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): at test.com.activities.ListActivity.onOptionsItemSelected (ListActivity.java:224) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Activity.onOptionsItemSelected (Activity.java:2313) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Activity.onMenuItemSelected (Activity.java:2201) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected (PhoneWindow.java:740) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в com.android.internal.view.menu.MenuItemImpl.invoke (MenuItemImpl.java:143) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.view.menu.MenuBuilder.performItemAction (MenuBuilder.java:855) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.view.menu.IconMenuView.invokeItem (IconMenuView.java:538) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в com.android.internal.view.menu.IconMenuItemView.performClick (IconMenuItemView.java:142) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.View $ PerformClick.run (View.java:8818) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Handler.handleCallback (Handler.java:587) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Handler.dispatchMessage (Handler.java:92) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Looper.loop (Looper.java:143) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.ActivityThread.main (ActivityThread.java:4701) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в java.lang.reflect.Method.invokeNative (собственный метод) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в java.lang.reflect.Method.invoke (Method.java:521) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) 09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в dalvik.system.NativeStart.main (собственный метод) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): java.lang.IllegalArgumentException: представление не прикреплено к оконному менеджеру 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.view.WindowManagerImpl.findViewLocked (WindowManagerImpl.java:355) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.view.WindowManagerImpl.removeView (WindowManagerImpl.java:200) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в android.view.Window $ LocalWindowManager.removeView (Window.java:432)09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.dismissDialog (Dialog.java:278) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.access $ 000 (Dialog.java:71) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog $ 1.run (Dialog.java:111) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.dismiss (Dialog.java:268) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.cancel (Dialog.java:951) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): at test.com.activities.ListActivity $ Sincronizacao.onPostExecute (ListActivity.java:331) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask.finish (AsyncTask.java:417) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask.access $ 300 (AsyncTask.java:127) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:429) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.Handler.dispatchMessage (Handler.java:99) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.Looper.loop (Looper.java:143) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.ActivityThread.main (ActivityThread.java:4701) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на java.lang.reflect.Method.invokeNative (собственный метод) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в java.lang.reflect.Method.invoke (Method.java:521) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) 09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в dalvik.system.NativeStart.main (собственный метод)

Но если я сделаю исходный вызов вот так (пункт меню третий):

mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);

Я не получаю никаких ошибок, независимо от того, сколько раз я запускаю тест. Почему я так поступаю?

...