Ich habe einen Server Anruf mit Retrofit + RxJava gemacht, dass ich sein Verhalten auf dem Bildschirm testen möchten.Android Espresso wartet rxjava .delay von beobachtbaren
Das Ziel besteht darin, vor dem Aufruf ein Ladebild zu setzen und nach dem Einblenden der Ergebnisse das Ladebild auszublenden und die Daten anzuzeigen.
Ich habe versucht, den Mock mit der "Verzögerung" -Methode aus der Observable-Klasse einzurichten, damit Espresso das Bild finden kann. Das ist der Code, den ich verwendet:
Observable<AccountDetails> observable = Observable.just(details)
.delay(5, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io());
doReturn(observable).when(mScope).requestAccounts();
performServerCall();
onView(withId(R.id.panel_loading)).check(matches(isDisplayed()));
Nach der Durchführung der Untersuchung wurde mir klar, dass der Espresso ist eigentlich die Verzögerung auf beobachtbaren gesetzt warten, bevor sie tatsächlich die Ausführung der Prüfung (wirdangezeigt). Auf diese Weise wird nur überprüft, nachdem die Informationen geladen wurden und das Ladebild verschwunden ist.
Ist das das normale Verhalten für RxJava/Espresso?
Gibt es einen besseren Weg, dies zu erreichen?
Sie haben Recht, ich war widerwillig zu akzeptieren, dass es ein Animationsproblem war, weil ich einige andere Tests hatte, die mit den Ergebnissen durcheinander bringen, aber am Ende stellt es sich heraus, die Animation zu sein. In meinem Fall habe ich alle Animationen deaktiviert, wenn die App im Debug-Modus läuft. –