Testen der Fortschrittsanzeige auf Android mit Espresso

Der Workflow sollte wie folgt aussehen:

Aktivität startet Fortschrittsbalken ist sichtbarNetzwerkanforderung wird ausgelöst (die inaktive Ressource ist bereits registriert, sodass Espresso darauf warten kann).Progress Bar ist verstecktText vom Netzwerk wird angezeigt.

is zu diesem Punkt habe ich Behauptungen für die Schritte geschrieben 1, 3, 5 und es funktioniert perfekt:

onView(withText("foo 1"))
    .check(matches(isDisplayed()));

Problem ist, ich habe keine Ahnung, wie ich Espresso wissen lassen soll, um die Sichtbarkeit des Fortschrittsbalkens zu überprüfenVo die Anfrage wird gestellt undnac die Anfrage wird gestellt.

Bedenke dieonCreate() Methode ist die folgende:

super.onCreate(...);
setContentView(...);

showProgressBar(true);
apiClient.getStuff(new Callback() {
    public void onSuccess() {
        showProgressBar(false);
    }
});

Ich habe Folgendes versucht, aber es funktioniert nicht:

// Activity is launched at this point.
activityRule.launchActivity(new Intent());

// Up to this point, the request has been fired and response was 
// returned, so the progress bar is now GONE.
onView(withId(R.id.progress_bar))
   .check(matches(isDisplayed()));

onView(withId(R.id.progress_bar))
    .check(matches(not(isDisplayed())));

Der Grund dafür ist, dass der Espresso, da der Client als inaktive Ressource registriert ist, wartet, bis er @ is idle erneut, bevor das erste @ ausgeführt wionView(...progressbar...)... Also brauche ich einen Weg, um Espresso wissen zu lassen, dassVO werde im Leerlauf.

BEARBEITEN das funktioniert auch nicht:

idlingResource.registerIdleTransitionCallback(new IdlingResource.ResourceCallback() {
        @Override
        public void onTransitionToIdle() {
            onView(withId(R.id.progress_bar))
                    .check(matches(isDisplayed()));
        }
    });

Antworten auf die Frage(8)

Ihre Antwort auf die Frage