Ich versuche einige Tests mit dem neuen Android-Test-Kit (Espresso) zu schreiben . Ich kann jedoch keine Informationen dazu finden, wie Sie überprüfen können, ob ein Dialogfeld angezeigt wird, und einige Aktionen ausführen (z. B. Klicken auf die positiven und negativen Schaltflächen usw.). Beachten Sie, dass ein Dialogfeld möglicherweise auch von a angezeigt wird WebView
, nicht von der Anwendung selbst.
Jede Hilfe wäre dankbar. Ich brauche nur einen Link oder einen Beispielcode für die Grundlagen:
- Überprüfen Sie, ob ein Dialogfeld angezeigt wird
- Führen Sie Klicks auf Dialogschaltflächen durch
- Interagiere mit der inneren Ansicht des Dialogfelds (wenn es sich um eine benutzerdefinierte Ansicht handelt)
- Preform klickt außerhalb des Dialogfelds und prüft, ob es angezeigt wird oder nicht (z. B. ob
setCancelable(false)
es im Dialogfeld- Generator aufgerufen wurde und wir dies überprüfen möchten).
Danke für deinen Rat!
android
android-espresso
Serj Lotutovici
quelle
quelle
Antworten:
Um zu überprüfen, ob ein Dialogfeld angezeigt wird, können Sie einfach überprüfen, ob Ansicht mit einem im Dialogfeld enthaltenen Text angezeigt wird:
oder basierend auf Text mit ID
Um auf die Schaltfläche "Dialoge" zu klicken, gehen Sie wie folgt vor (Schaltfläche 1 - OK, Schaltfläche 2 - Abbrechen):
AKTUALISIEREN
quelle
Ich benutze dies derzeit und es scheint gut zu funktionieren.
quelle
Wenn Sie einen solchen AlertDialog haben:
Sie können überprüfen, ob die Komponenten angezeigt werden:
und führen Sie eine Aktion aus:
quelle
android.R.id.message
und der Titel hatte eine versteckte ID vonandroid.R.id.alertTitle
.int alertDialogTitleId = android.support.v7.appcompat.R.id.alertTitle;
Um Frage 4 zu beantworten, die in der akzeptierten Antwort nicht beantwortet wird, habe ich den folgenden Code geändert, den ich hier im Stapelüberlauf ( Link ) gefunden habe, um zu testen, ob ein Toast angezeigt wurde.
Die
id
übergebene ID ist die ID einesView
aktuell in Ihrem Dialogfeld angezeigten. Sie können die Methode auch folgendermaßen schreiben:Und jetzt sucht es nach
View
einer bestimmten Textzeichenfolge.Verwenden Sie es so:
quelle
Die Schaltflächen-IDs R.id.button1 und R.id.button2 sind geräteübergreifend nicht identisch. Die IDs können sich mit den Betriebssystemversionen ändern.
Der richtige Weg, dies zu erreichen, ist die Verwendung von UIAutomator. Fügen Sie die UIAutomator-Abhängigkeit in Ihr build.gradle ein
und verwenden
quelle
android.R.id.button1
,android.R.id.button2
undandroid.R.id.button3
für „positiv“, „neutral“ und „negativ“ sind globale Symbole, kann verwendet werden. Wenn Sie Schaltflächen über ihren Text auswählen - was völlig in Ordnung ist -, benötigen Sie UIAutomator nicht, können dies aber auch mit Espresso tunonView(withText("ButtonTest")).perform(click())
.Nur für den Fall, dass jemand wie ich über diese Frage stolpert. Alle Antworten funktionieren nur für Dialoge MIT Dialogschaltflächen. Versuchen Sie nicht, dies für Fortschrittsdialoge ohne Benutzerinteraktion zu verwenden. Espresso wartet darauf, dass die App in den Ruhezustand wechselt. Solange der Fortschrittsdialog sichtbar ist, ist die App nicht inaktiv.
quelle