Das ist nicht üblich, was Sie tun. Sie rufen onView()
auf dem UI-Thread der zu testenden Anwendung auf, deshalb wird der Test nie beendet. Es ist eine alte Sackgasse.
Um den Test zu beenden, rufen Sie keine Espresso-Methoden in runTestOnUiThread
. Und in UI-Tests sollten Sie nicht auf Buttons
klicken, indem Sie entweder die performClick()
Methode aufrufen. Verwenden Espresso dafür:
public void test_click(){
// Click on the `some_button`
onView(withId(R.id.some_other)).perform(click());
// Or click on view with the text 'OK`
onView(withText("OK")).perform(click());
// Check that a view with R.id.some_other_button is displayed
onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));
}
Die AppNotIdleException
ausgelöst wird, wenn Espresso hat zu lange warten, bis der App frei wird. In Ihrem Fall macht die App etwas im Hintergrund mit AsyncTasks
. Haben Sie einige Aufgaben ausgeführt?
zu reduzieren, Zeit bis zum Espresso ausfällt, können Sie seine Timeouts reduzieren:
@BeforeClass
public static void beforeClass() {
IdlingPolicies.setMasterPolicyTimeout(10, TimeUnit.SECONDS);
IdlingPolicies.setIdlingResourceTimeout(10, TimeUnit.SECONDS);
}
Ich weiß, dass aber, bekomme ich diese Meldung, wenn ich den 'Runnable' Anruf nicht verwenden, ich diesen' CalledFromWrongThreadException erhalten: Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren. Übrigens kommt mein 'Button' von diesem' alertDialog.getButton (DialogInterface.BUTTON_POSITIVE) '', so dass ich seine ID nicht kenne ... um '' aufzurufen perform (click()) '(aber ich google es gerade) – Newben
' CalledFromWrongThreadException' wird ausgelöst, wenn Sie 'perfectionClick()' aus dem Test-Thread ausführen. Wenn Sie wirklich 'performClick()' ausführen wollen, müssen Sie 'runTestOnUiThread()' verwenden, aber 'onView()' daraus entfernen. – thaussma
Ja, das ist genau was ich vor ein paar Minuten, aber ich bekomme diese 'android.support.test.espresso.PerformException: Fehler bei der Ausführung 'einzelner Klick' - bei Koordinaten: 581, 821 und Präzision: 16, 16 'auf' mit Text : ist in Ordnung"'. – Newben