Ich führe Espresso-Tests auf meiner Android-Anwendung. Der Test ist flockig. Es kann zuverlässig feststellen, dass das Datenmodell aktualisiert ist. Mein Problem ist, dass die ViewMatchers den gleichen Wert in der Ansicht nicht übereinstimmen können, da die ViewDataBinding die Ansichten noch nicht aktualisiert hat. (Zumindest die meiste Zeit des Tests läuft.)Wie kann ich Espresso warten lassen, bis Data Binding die Ansicht mit dem Datenmodell aktualisiert hat?
Gibt es so etwas wie eine IdlingResource, die inaktiv wird, wenn die ViewDataBinding keine ausstehenden Änderungen in der Ansicht hat?
My Work-around ist eine Kombination executePendingBindings von() aufrufen und ein kleiner Thread.sleep (...)
'executePendingBindings' sollte ausreichen, um loszuwerden: sofort wird ausgeführt die Bindung, wenn diese Methode aufgerufen wird, und nicht während des nächsten Rahmens von' Choreographer' – pskink
That war auch mein erster Gedanke. Es stellt sich jedoch heraus, dass der Test auf dem AndroidJUnit-Thread ausgeführt wird und dass executePendingBindings auf dem MainThread ausgeführt werden muss. Das Planen auf dem Main ist nicht schnell genug oder blockiert genug für eine fehlgeschlagene Assertion im AndroidJUnit-Thread. – Rene
Haben Sie eine Lösung gefunden? Ich habe ein ähnliches Problem, wo während der Espressotests falsche Werte an die Datenbindung übergeben werden, aber wenn ich einen Unterbrechungspunkt hinzufüge und einen Moment warte, werden die korrekten Werte gesendet, die Ansichten werden richtig verknüpft und Espresso findet die Ansicht –