Warten, bis Anzeige sichtbar mit IdleResource

Ich Schreibe Instrumentation tests mit Verwendung von Espresso-2.2.

Flow will ich testen:

  1. radioButton geklickt test
  2. onClick startet Anfrage an API
  3. nach jeder Zeit verschiedene Zeit erhalte ich Antwort
  4. positive Reaktion auslöst interface-Methode, die aufgerufen wird, in der Aktivität
  5. onRequestSuccess ich mache zusätzliches Bedienfeld auf dem Bildschirm mit dem Namen vSetupAmount sichtbar

Ich möchte mich registrieren IdleResource nach Klick auf den radioButton, so wartet er, bis vSetupAmount sichtbar wird. Aber ich kann nicht damit es funktioniert. Bitte sagen Sie mir, was mache ich falsch.

Habe ich so geschrieben IdleResource:

public class AmountViewIdlingResource implements IdlingResource {

    private CountriesAndRatesActivity activity;
    private ResourceCallback callback;

    private SetupAmountView amountView;

    public AmountViewIdlingResource(CountriesAndRatesActivity activity) {
        this.activity = activity;

        amountView = (SetupAmountView) this.activity.findViewById(R.id.vSetupAmount);
    }

    @Override public String getName() {
        return "Amount View idling resource";
    }

    @Override public boolean isIdleNow() {
        callback.onTransitionToIdle();
        return amountView.getVisibility() == View.VISIBLE;
    }

    @Override public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
        this.callback = resourceCallback;
    }

}

So, ich bin vorbei an Aktivität zu IdleResource, link view mit Variablen. Ich verstehe, dass IdleResource lassen nicht testen, gehen Sie durch, bis isIdleNow() liefert den Wert true. Also, wenn view-Ansicht.GEGANGEN, dann wird es nicht weiter gehen.

Wie es aussieht im test:

    //click of radioButton picked from radioGroup
    onView(withId(rgDeliveries.getChildAt(id).getId())).perform(scrollTo(), click());

    //wait for view to become visible
    Espresso.registerIdlingResources(new AmountViewIdlingResource(getActivity()));

    //go to button on view
    onView(withId(R.id.btnGetStarted)).perform(scrollTo());

    //unregister idle resource
    for (  IdlingResource resource : getIdlingResources()) {
        Espresso.unregisterIdlingResources(resource);
    }

So, ich meine, klicken Sie auf den radioButton. IdleResource erfolgreich registriert, aber es passiert nichts. Auf meinem Gerät API-Antwort kommt. vSetupAmount wird angezeigt, aber

amountView.getVisibility() == View.VISIBLE;

denen geprüft wird, für immer (aber ich sehe, meine Sicht auf Bildschirm) immer false zurück.

Was mache ich falsch?

InformationsquelleAutor F1sher | 2015-10-07

Schreibe einen Kommentar