Framework Pengujian Espresso - Arsitektur

Dalam bab ini, mari kita pelajari istilah framework pengujian espresso, cara menulis kasus pengujian espresso sederhana, dan alur kerja atau arsitektur lengkap dari framework pengujian espresso.

Gambaran

Espresso menyediakan sejumlah besar kelas untuk menguji antarmuka pengguna dan interaksi pengguna aplikasi android. Mereka dapat dikelompokkan menjadi lima kategori seperti yang ditentukan di bawah ini -

Pelari JUnit

Framework pengujian Android menyediakan runner, AndroidJUnitRunner untuk menjalankan kasus pengujian espresso yang ditulis dalam kasus pengujian gaya JUnit3 dan JUnit4. Ini khusus untuk aplikasi android dan secara transparan menangani pemuatan kasus uji espresso dan aplikasi yang sedang diuji baik di perangkat sebenarnya atau emulator, menjalankan kasus uji dan melaporkan hasil kasus uji. Untuk menggunakan AndroidJUnitRunner dalam kasus pengujian, kita perlu membuat anotasi kelas pengujian menggunakan anotasi @RunWith dan kemudian meneruskan argumen AndroidJUnitRunner seperti yang ditentukan di bawah ini -

@RunWith(AndroidJUnit4.class)
   public class ExampleInstrumentedTest {
}

Aturan JUnit

Framework pengujian Android menyediakan aturan, ActivityTestRule untuk meluncurkan aktivitas android sebelum menjalankan kasus pengujian. Ini meluncurkan aktivitas sebelum setiap metode yang dianotasi dengan @ Test` dan @Before. Ini akan menghentikan aktivitas setelah metode yang dianotasi dengan @After. Kode contoh adalah sebagai berikut,

@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);

Di sini, MainActivity adalah aktivitas yang akan diluncurkan sebelum menjalankan kasus pengujian dan dimusnahkan setelah kasus pengujian tertentu dijalankan.

ViewMatchers

Espresso menyediakan sejumlah besar kelas view matcher (dalam paket androidx.test.espresso.matcher.ViewMatchers ) untuk mencocokkan dan menemukan elemen / tampilan UI dalam hierarki tampilan layar aktivitas android. Metode Espresso onView mengambil satu argumen berjenis Matcher (View matcher ), menemukan tampilan UI yang sesuai, dan mengembalikan objek ViewInteraction yang sesuai . Objek ViewInteraction yang dikembalikan oleh metode onView selanjutnya dapat digunakan untuk menjalankan tindakan seperti klik pada tampilan yang cocok atau dapat digunakan untuk menegaskan tampilan yang cocok. Kode contoh untuk menemukan tampilan dengan teks, "Hello World!" adalah sebagai berikut,

ViewInteraction viewInteraction = Espresso.onView(withText("Hello World!"));

Di sini, withText adalah sebuah matcher, yang bisa digunakan untuk mencocokkan tampilan UI yang memiliki teks "Hello World!"

ViewActions

Espresso menyediakan sejumlah besar kelas tindakan tampilan (di androidx.test.espresso.action.ViewActions) untuk menjalankan tindakan berbeda pada tampilan yang dipilih / cocok. Setelah onView cocok dan mengembalikan objek ViewInteraction , tindakan apa pun bisa dipanggil dengan memanggil metode "perform" dari objek ViewInteraction dan meneruskannya dengan tindakan tampilan yang tepat. Contoh kode untuk mengklik tampilan yang cocok adalah sebagai berikut,

ViewInteraction viewInteraction = Espresso.onView(withText("Hello World!"));
viewInteraction.perform(click());

Di sini, aksi klik dari tampilan yang cocok akan dipanggil.

ViewAssertions

Mirip dengan view matcher dan tindakan tampilan, Espresso menyediakan sejumlah besar pernyataan tampilan (dalam paket androidx.test.espresso.assertion.ViewAssertions ) untuk menegaskan bahwa tampilan yang cocok adalah yang kami harapkan. Setelah onView cocok dan mengembalikan objek ViewInteraction , pernyataan apa pun bisa diperiksa menggunakan metode pemeriksaan ViewInteraction dengan meneruskannya dengan pernyataan tampilan yang tepat. Kode contoh untuk menegaskan bahwa tampilan yang cocok adalah sebagai berikut,

ViewInteraction viewInteraction = Espresso.onView(withText("Hello World!"));
viewInteraction.check(matches(withId(R.id.text_view)));

Di sini, kecocokan menerima view matcher dan mengembalikan pernyataan tampilan, yang bisa diperiksa dengan metode pemeriksaan ViewInteraction .

Alur Kerja Kerangka Kerja Pengujian Espresso

Mari kita pahami cara kerja framework pengujian espresso dan bagaimana framework ini menyediakan opsi untuk melakukan segala jenis interaksi pengguna dengan cara yang sederhana dan fleksibel. Alur kerja kasus uji espresso dijelaskan di bawah ini,

  • Seperti yang kita pelajari sebelumnya, runner Android JUnit, AndroidJUnit4 akan menjalankan kasus pengujian android. Kasus pengujian espresso perlu ditandai dengan @RunWith (AndroidJUnut.class) . Pertama, AndroidJUnit4 akan mempersiapkan lingkungan untuk menjalankan kasus pengujian. Ini memulai perangkat android atau emulator yang terhubung, menginstal aplikasi dan memastikan aplikasi yang akan diuji dalam keadaan siap. Ini akan menjalankan kasus uji dan melaporkan hasilnya.

  • Espresso membutuhkan setidaknya satu aturan JUnit berjenis ActivityTestRule untuk menentukan aktivitas. Runner Android JUnit akan memulai aktivitas yang akan diluncurkan menggunakan ActivityTestRule .

  • Setiap kasus pengujian membutuhkan minimal satu onView atau onDate (digunakan untuk menemukan tampilan berbasis data seperti AdapterView ) pemanggilan metode untuk mencocokkan dan menemukan tampilan yang diinginkan. onView atau onData mengembalikan objek ViewInteraction .

  • Setelah objek ViewInteraction dikembalikan, kita bisa meminta tindakan dari tampilan yang dipilih atau memeriksa tampilan untuk tampilan yang diharapkan menggunakan pernyataan.

  • Tindakan dapat dipanggil menggunakan metode perform dari objek ViewInteraction dengan meneruskan salah satu tindakan tampilan yang tersedia.

  • Pernyataan dapat dipanggil menggunakan metode pemeriksaan objek ViewInteraction dengan meneruskan salah satu pernyataan tampilan yang tersedia.

Representasi diagram Alur Kerja adalah sebagai berikut,

Contoh-lihat pernyataan

Mari kita tulis kasus uji sederhana untuk menemukan tampilan teks bertuliskan "Hello World!" teks di aplikasi "HelloWorldApp" kami dan kemudian nyatakan menggunakan pernyataan tampilan. Kode lengkapnya adalah sebagai berikut,

package com.tutorialspoint.espressosamples.helloworldapp;

import android.content.Context;
import androidx.test.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.matcher.ViewMatchers.withText;;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static org.junit.Assert.*;
/**
   * Instrumented test, which will execute on an Android device.
   *
   * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
   @Rule
   public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
   @Test
   public void view_isCorrect() {
      onView(withText("Hello World!")).check(matches(isDisplayed()));
   }
   @Test
   public void useAppContext() {
      // Context of the app under test.
      Context appContext = InstrumentationRegistry.getTargetContext();
      assertEquals("com.tutorialspoint.espressosamples.helloworldapp", appContext.getPackageName());
   }
}

Di sini, kami telah menggunakan pencocok tampilan withText untuk menemukan tampilan teks yang bertuliskan "Hello World!" teks dan cocok dengan pernyataan tampilan untuk menegaskan bahwa tampilan teks ditampilkan dengan benar. Setelah kasus pengujian dipanggil di Android Studio, itu akan menjalankan kasus pengujian dan melaporkan pesan sukses seperti di bawah ini.

view_isCorrect test case