2013-10-25 8 views
6

Ich probiere die neue Android Testbibliothek Espresso aus. Wenn ich es versuche:Android Espresso NoMatchingViewException on check

onView(withId(R.id.gettingStarted)) 

Der Test läuft gut. Aber wenn ich versuche:

onView(withId(R.id.gettingStarted)).check(matches(isDisplayed())); 

Ich bekomme eine .NoMatchingViewException: No views in hierarchy found matching: with id: is <2131296645>

Hat jemand etwas Ähnliches schon einmal gesehen? Mein erster Reflex ist, dass dies nur ein Fehler ist, weil Espresso nur auf Version 1.0 ist. Ich verwende Android Studio und befolge die Installationsanweisungen genau.

Antwort

7

Dieses Verhalten erwartet wird.

onView(withId(R.id.gettingStarted)) an sich nichts tun. Wenn Sie die Methode perform aufrufen, führt Espresso den in der onView-Methode bereitgestellten Matcher für die aktuelle Ansichtshierarchie aus. Wenn keine übereinstimmende Ansicht gefunden wird, wird die Ausnahme ausgelöst.

Siehe Startanleitung für weitere Informationen: https://google.github.io/android-testing-support-library/docs/espresso/index.html

+3

Aber die Ansicht ist in der Hierarchie vorhanden, läuft das Steuerelement schneller als die Ansichten, die geladen werden? –

0

Es gibt viele berechtigte Fälle, in denen Sie R.id während der Testentwicklungszeit nicht ermitteln können. Beispielsweise hat die bestimmte Ansicht möglicherweise keine R.id oder die R.id ist nicht eindeutig. Dies kann dazu führen, dass normale Instrumentierungstests spröde und kompliziert zu schreiben sind, weil der normale Zugriff auf die Ansicht (mit findViewById()) nicht funktioniert. Daher müssen Sie möglicherweise auf private Mitglieder der Aktivität oder des Fragments zugreifen, die die Ansicht enthalten, oder einen Container mit einer bekannten R.id suchen und zu seinem Inhalt für die jeweilige Ansicht navigieren.

Für weitere Informationen: https://code.google.com/p/android-test-kit/wiki/EspressoStartGuide

+4

Ich bin mir nicht sicher, dass das richtig ist. Ich denke, was Sie beziehen, ist eine AmbiguousException, aber hier kann es einfach nicht die Ansicht finden. Was so merkwürdig ist, ist, dass es die Ansicht zu finden scheint, aber sobald ich irgendeine Art von Behauptung mache, kann es es nicht mehr finden. – Zargoon

0

Dies bedeutet, dass keine Aussicht für diese Id in der kompletten Hierarchie des UI Baumes, unabhängig davon, ob die Aussicht ist sichtbar oder unsichtbar zu finden ist.

Verwandte Themen