Kerangka Pengujian Espresso - Perekam Uji

Menulis kasus uji adalah pekerjaan yang membosankan. Meskipun espresso menyediakan API yang sangat mudah dan fleksibel, menulis kasus pengujian mungkin merupakan tugas yang malas dan memakan waktu. Untuk mengatasinya, Android studio menyediakan fitur untuk merekam dan menghasilkan kasus uji espresso. Record Espresso Test tersedia di bawah menu Run .

Biarkan kami merekam kasus uji sederhana di HelloWorldApp kami dengan mengikuti langkah-langkah yang dijelaskan di bawah ini,

  • Buka studio Android diikuti dengan aplikasi HelloWorldApp .

  • Klik RunRecord Espresso test dan pilih MainActivity .

  • The Recorder screenshot adalah sebagai berikut,

  • Klik Tambahkan Pernyataan . Ini akan membuka layar aplikasi seperti yang ditunjukkan di bawah ini,

  • Klik Halo Dunia! . Layar Perekam untuk Memilih tampilan teks adalah sebagai berikut,

  • Sekali lagi klik Save Assertion Ini akan menyimpan pernyataan dan menampilkannya sebagai berikut,

  • Klik OK . Ini akan membuka jendela baru dan menanyakan nama kasus uji. Nama defaultnya adalah MainActivityTest

  • Ubah nama kasus uji, jika perlu.

  • Sekali lagi, klik OK . Ini akan menghasilkan file, MainActivityTest dengan kasus uji kami yang direkam. Pengkodean lengkapnya adalah sebagai berikut,

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));
         }
      };
   }
}
  • Terakhir, jalankan pengujian menggunakan menu konteks dan periksa apakah kasus pengujian berjalan.