2016-08-05 7 views
3

Ich bekomme ständig diesen Fehler, wenn ich auf einer Seite lande. Was könnte die Lösung dafür sein?Espresso: AppNotIdleException

android.support.test.espresso.AppNotIdleException: Looped for 4539 iterations over 60 SECONDS. The following Idle Conditions failed . 
at dalvik.system.VMStack.getThreadStackTrace(Native Method) 
at java.lang.Thread.getStackTrace(Thread.java:580) 
at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:92) 
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:56) 
at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:184) 
at android.support.test.espresso.ViewInteraction.check(ViewInteraction.java:158) 
+0

Verwenden Sie die IdlingResources? Vielleicht vermisst du irgendwo ein "Dekrement", um untätig zu berichten? – nenick

Antwort

0

Es ist sehr wahrscheinlich, weil Sie nicht die folgenden drei Einstellungen in Sie Entwickleroptionen haben deaktivieren:

  • Fenster Animation Skala
  • Transition-Animationsgröße
  • Animator Dauer Skala

Für weitere Informationen lesen Sie die Espresso einrichten.

Wenn das nicht der Fall ist, scheint etwas mit Ihrem Bildschirm zu interagieren, während der Test läuft.

1

Es kann aufgrund eines UI-Elements auftreten, das sich selbst unendlich erstellt. Zum Beispiel haben Sie eine benutzerdefinierte ProgressBar oder Snackbar, die auf unsichtbar/weg in xml gesetzt ist und Sie es in Java-Code sichtbar machen. Aber es könnte sich im unsichtbaren/verschwundenen Zustand auch aufgrund eines schlecht geschriebenen Codes neu zeichnen. Also, gehen Sie durch alle benutzerdefinierten UI-Elemente auch wenn Sie welche haben.

+1

Das war das Problem für mich (invalidate() versehentlich aufgerufene Schleife). Um dieses Problem zu diagnostizieren, können Sie Entwickleroptionen> Oberflächenaktualisierungen anzeigen aktivieren. Beleidigende Ansichten werden sehr schnell blinken. – Project

+0

Ja ... das ist der Weg, um das Problem zu diagnostizieren. –