Espresso Testing Framework - Testrekorder

Das Schreiben eines Testfalls ist eine mühsame Aufgabe. Obwohl Espresso eine sehr einfache und flexible API bietet, kann das Schreiben von Testfällen eine faule und zeitaufwändige Aufgabe sein. Um dies zu überwinden, bietet Android Studio eine Funktion zum Aufzeichnen und Generieren von Espresso-Testfällen. Record Espresso Test ist im Menü Run verfügbar .

Lassen Sie uns einen einfachen Testfall in unserer HelloWorldApp aufzeichnen, indem Sie die unten beschriebenen Schritte ausführen:

  • Öffnen Sie das Android Studio, gefolgt von der HelloWorldApp- Anwendung.

  • Klicken Sie auf AusführenEspressotest aufzeichnen und wählen Sie MainActivity .

  • Der Recorder- Screenshot sieht wie folgt aus:

  • Klicken Sie auf Assertion hinzufügen . Der Anwendungsbildschirm wird wie unten gezeigt geöffnet.

  • Klicken Sie auf Hallo Welt! . Der Recorder- Bildschirm zur Auswahl der Textansicht lautet wie folgt:

  • Klicken Sie erneut auf Zusicherung speichern. Dadurch wird die Zusicherung gespeichert und wie folgt angezeigt:

  • Klicken Sie auf OK . Es öffnet sich ein neues Fenster und Sie werden nach dem Namen des Testfalls gefragt. Der Standardname ist MainActivityTest

  • Ändern Sie gegebenenfalls den Namen des Testfalls.

  • Klicken Sie erneut auf OK . Dadurch wird eine Datei, MainActivityTest, mit unserem aufgezeichneten Testfall generiert . Die vollständige Codierung lautet wie folgt:

package com.tutorialspoint.espressosamples.helloworldapp;

import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;

import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import androidx.test.espresso.ViewInteraction;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;

@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
   @Rule
   public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
   @Test
   public void mainActivityTest() {
      ViewInteraction textView = onView(
         allOf(withId(R.id.textView_hello), withText("Hello World!"),
         childAtPosition(childAtPosition(withId(android.R.id.content),
         0),0),isDisplayed()));
      textView.check(matches(withText("Hello World!")));
   }
   private static Matcher<View> childAtPosition(
      final Matcher<View> parentMatcher, final int position) {
      return new TypeSafeMatcher<View>() {
         @Override
         public void describeTo(Description description) {
            description.appendText("Child at position " + position + " in parent ");
            parentMatcher.describeTo(description);
         }
         @Override
         public boolean matchesSafely(View view) {
            ViewParent parent = view.getParent();
            return parent instanceof ViewGroup &&
               parentMatcher.matches(parent)&& view.equals(((ViewGroup)
               parent).getChildAt(position));
         }
      };
   }
}
  • Führen Sie den Test abschließend über das Kontextmenü aus und prüfen Sie, ob der Testfall ausgeführt wird.