Jawaban ini untuk orang yang baru memulai pengujian Android. Saya akan memberikan dua contoh sederhana untuk membantu Anda melihat cara kerja pengujian. Jika Anda mengikuti selama 10 menit berikutnya, Anda akan siap untuk mulai menambahkan pengujian Anda ke aplikasi Anda sendiri. Saya pikir Anda akan terkejut betapa mudahnya itu. Saya pasti.
Pengantar Pengujian Android
Ada dua jenis tes yang akan Anda lakukan.
- Tes unit lokal. Ini dijalankan secara lokal di JVM (Java Virtual Machine). Karena mereka lokal, mereka cepat. Anda dapat menggunakannya untuk menguji bagian-bagian kode Anda yang hanya membutuhkan Java dan bukan Android API. (Terkadang Anda dapat membuat objek API palsu untuk menguji lebih banyak hal secara lokal. Ini disebut mocking .
Context
Contohnya adalah tiruan .)
- Tes terinstrumen. Pengujian ini dijalankan di perangkat nyata atau di emulator. Itu membuat mereka lebih lambat dari pengujian lokal. Namun, mereka lebih fleksibel karena Anda memiliki API Android lengkap yang tersedia untuk Anda.
Buat proyek baru dan Anda akan melihat folder default berikut.
Semuanya sudah ada dan menunggu Anda untuk membuat pengujian. Semuanya sudah diatur!
Cara membuat pengujian unit lokal
Buka ExampleUnitTest
file yang ditunjukkan pada gambar di atas. itu akan terlihat seperti ini:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Tekan panah hijau ganda untuk menjalankan semua tes atau panah hijau tunggal untuk menjalankan hanya satu. (Dalam hal ini hanya ada satu pengujian sehingga keduanya melakukan hal yang sama.)
Ini harus lulus (selama 2 + 2
masih 4
ketika Anda membaca jawaban ini). Selamat, Anda baru saja menjalankan tes pertama Anda!
Membuat tes Anda sendiri
Ayo tulis tes kita sendiri. Pertama tambahkan kelas ini ke proyek aplikasi utama Anda sehingga kami memiliki sesuatu untuk diuji:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Sekarang ubah addition_isCorrect()
metode di kelas pengujian menjadi seperti kode berikut (atau tambahkan saja metode lain dengan nama yang berbeda):
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
Jalankan lagi dan Anda akan melihatnya lulus. Selamat, Anda baru saja membuat tes pertama Anda sendiri! (Yah, kurasa secara teknis itu milikku, tapi, hei, cukup dekat. Apa milikku adalah milikmu.)
Cara membuat tes berinstrumen
Buka ExampleInstrumentedTest
file. itu akan terlihat seperti ini:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
Tekan salah satu tombol hijau itu lagi.
Selama Anda memiliki perangkat nyata yang terhubung atau emulator sudah disiapkan, itu seharusnya sudah memulainya dan menjalankan aplikasi Anda. Selamat, Anda baru saja menjalankan pengujian berinstrumen pertama Anda!
Membuat tes Anda sendiri
Pengujian berinstrumen menggunakan Espresso untuk menjalankan pengujian. Ini seperti pengguna robot kecil Anda sendiri yang dapat menguji aplikasi Anda. Anda dapat memintanya untuk melakukan sesuatu seperti menekan tombol atau membaca properti TextView.
Anda dapat menulis instruksi bagaimana melakukan tes dengan tangan, tetapi karena kita baru memulai, mari gunakan fungsi rekam otomatis . Ini sangat sederhana.
Pertama tambahkan tombol ke UI Anda sehingga kami memiliki sesuatu untuk dikerjakan. Saya melakukan ini:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
Kemudian tekan Run> Record Espresso Test di menu.
Setelah dimulai, klik tombol di emulator lalu untuk menyelesaikan pilih OK pada dialog Record. Ini harus menghasilkan kode tes berikut secara otomatis.
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
Bagus! Anda baru saja membuat tes berinstrumen pertama Anda! Itu sangat mudah. Anda mungkin harus menambahkan pernyataan untuk membuatnya menjadi tes nyata, tetapi itu juga cukup mudah dilakukan dengan perekam. Tonton video ini untuk membahas lebih dalam.
Pelajaran lanjutan
Saya akan menonton videonya terlebih dahulu dan kemudian membaca dokumentasi. Itu semua sangat membantu. Tautan terakhir adalah serangkaian artikel yang membahas beberapa hal penting untuk dipikirkan saat memilih apa yang akan diuji.