Dies ist in Bezug auf Espresso. Ich führe erfolgreich einen Integrationstest auf einem Simulator durch. Ich denke, einige Tests scheitern, weil es zu schnell läuft. Gibt es eine Möglichkeit, die Ausführung/Wiedergabe langsamer zu machen?Slow-down Espresso
Antwort
Es ist unmöglich, dass ein Test fehlschlägt, um zu beschleunigen. Espresso kann alle Testvorgänge mit der zu testenden Anwendung synchronisieren. Standardmäßig wartet Espresso darauf, dass Benutzeroberflächenereignisse in der aktuellen Nachrichtenwarteschlange verarbeitet werden und der Standardwert AsyncTasks
abgeschlossen ist, bevor es zum nächsten Testvorgang weitergeht. Wenn dies jedoch für Ihre Anwendung nicht ausreicht, können Sie Espresso sagen, wann es inaktiv ist und wann nicht. Um dies zu tun, müssen Sie:
- Implementieren Sie die IdlingResource Schnittstelle.
- Registrieren Sie eine oder mehrere Ihrer IdlingResource (s) mit Espresso, indem Sie im Testsetup
Espresso.registerIdlingResource
aufrufen.
Wenn Sie mehr Hilfe benötigen, fragen Sie mich!
Haha ... tatsächlich funktioniert Espresso wie diese nur. Das Problem, mit dem Sie konfrontiert werden, besteht darin, dass Benutzeroberflächenereignisse nicht abgeschlossen werden können (z. B. Klicken auf ein Listenelement, bevor die Liste von einem Netzwerkaufruf geladen wird). In diesem Fall, wo Ihre Ressourcen aus anderen Threads geladen werden, können Sie tatsächlich Thread.sleep (millis) oder effizienter UiController die loopMainThreadForAtleast (Millis) -Methode auf something to load
warten (Ereignis zu vervollständigen).
Wenn Sie einen Espresso-Test in Android Studio aufzeichnen, werden automatisch Sleep-Anweisungen zu den Tests hinzugefügt, wenn eine Interaktion mit der Ansicht stattfindet, um die Verzögerung zu verarbeiten. Dies ist der Ansatz, mit den Kommentaren erzeugt zusammen ist:
// Added a sleep statement to match the app's execution delay.
// The recommended way to handle such scenarios is to use Espresso idling resources:
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
try {
Thread.sleep(700);
} catch (InterruptedException e) {
e.printStackTrace();
}