6

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

4

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!

-1

Ich hatte dieses Problem auch. Ich habe das gelöst, indem ich die Aktivitätsanimation auf meinem Gerät aus den Entwickleroptionen entfernt habe.

Wenn Ihr Problem immer noch da ist, können Sie sleep in Ihrem Test verwenden, um zu verlangsamen.

SystemClock.sleep(1000); 

enter image description here

0

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).

0

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(); 
} 

Link to the docs