Espresso 2 unter Android: Intermediate-Tests schlagen fehl, wenn die zu testende Aktivität nicht gestartet wurde, während Aktivitäten aus früheren Tests noch aktiv sind

8

Ich benutze Espresso 2 zum Testen meiner Android App. Mittelmäßig sehe ich Tests zufällig mit dieser Espresso-Fehlermeldung fehlschlagen:

fehlgeschlagen: testLongPressXXXXX (com.company.xxx.tests.testSuite.Test)  ----- Ausnahme beginnen ----- android.support.test.espresso.NoMatchingViewException: Es wurden keine Ansichten in der Hierarchie gefunden, die übereinstimmten: mit der ID: com.company.xxx:id/xxx_view_id Hierarchie anzeigen: + & gt; DecorView {ID = -1, Sichtbarkeit = VISIBLE, Breite = 729, Höhe = 319, Has-Fokus = Falsch, Has-Focusable = Falsch, Has-Window-Focus = Wahr, Is-Clickable = False, Is- enabled = true, is-focused = false, is-focusable = false, is-layout-required = false, is-selected = false, root-is-layout-request = false, has-input-connection = false, x = 0.0, y = 0.0, Kinderzählung = 1} ...

Zu Beginn eines Tests gibt die Espresso-Instrumentierung die Anzahl der Aktivitäten aus, die bei einem vorherigen Test noch vorhanden sind:

MonitoringInstrumentation: Aktivitäten, die immer noch in CREATED to STOPPED sind: (number)

Immer wenn ich einen fehlgeschlagenen Test sehe, sehe ich immer, dass die Anzahl der aktiven Aktivitäten nicht 0 ist, was mich zu der Annahme verleitet hat, dass dies der Grund für dieses Problem ist, obwohl die meiste Zeit vor einem Test Live-Aktivitäten stattfinden läuft noch erfolgreich.

Wenn dies passiert, zeigt das Gerät den Startbildschirm für etwa 10 Sekunden an, bevor es scheitert. Das passiert natürlich nur, wenn ich mehr als einen Test gleichzeitig mache.

Meine Frage ist, warum gibt es Live-Aktivitäten zwischen den Tests und gibt es eine Möglichkeit, die Instrumentierung warten zu lassen, bis die Aktivitäten aus dem vorherigen Test beendet sind, bevor Sie mit dem nächsten Test fortfahren.

Wenn jemand eine andere Idee hat, warum die Tests zwischenzeitlich versagen, ist das ebenfalls hilfreich.

    
royeet 05.01.2016, 16:29
quelle

1 Antwort

5

Diese Frage wurde vor einiger Zeit gestellt, aber da dies immer noch relevant zu sein scheint, dachte ich, ich würde teilen, was ich gefunden habe. Ich stehe vor einem ähnlichen Problem - AmbiguousViewMatcherException auf Ansichten, die eine eindeutige ID haben, verschiedene Tests fehlschlagen zufällig - wahrscheinlich aufgrund von Aktivitäten nicht zerstört werden.

Dies scheint ein bekanntes Problem zu sein und sollte in der nächsten Version behoben werden (siehe hier: Ссылка ). Anscheinend werden onDestroy () und isFinishing () nicht nach jedem Test zuverlässig aufgerufen, so dass Sie nicht jedes Mal eine neue Aktivität erhalten oder sogar zwei Aktivitäten übereinander haben.

Bis sie es behoben haben, habe ich beschlossen, meine Zeit nicht für einen Workaround zu verschwenden, sondern angefangen, Genymotion-Emulatoren zu verwenden, die mein Problem gelöst haben - möglicherweise weil sie schneller laufen als die eingebauten in Android Studio (wie hier ).

    
AndroidAva 08.07.2016, 07:45
quelle

Tags und Links