Pengujian berinstrumen berjalan di perangkat Android, baik fisik maupun emulasi. Sebagai demikian, mereka bisa memanfaatkan API framework Android. Pengujian berinstrumen oleh karena itu memberikan lebih banyak {i>fidelity <i}daripada tes lokal, meskipun pengujian ini berjalan lebih perlahan.
Sebaiknya gunakan uji instrumentasi hanya jika Anda harus melakukan pengujian dengan perilaku perangkat nyata. AndroidX Test menyediakan beberapa library yang memudahkan penulisan uji instrumentasi jika diperlukan.
Menyiapkan lingkungan pengujian Anda
Dalam project Android Studio, Anda menyimpan file sumber untuk instrumentasi
pengujian di module-name/src/androidTest/java/
. Direktori ini sudah ada saat
Anda membuat proyek baru dan berisi contoh uji instrumentasi.
Sebelum memulai, Anda harus menambahkan AndroidX Test API, yang memungkinkan Anda
membuat dan menjalankan kode pengujian berinstrumen untuk aplikasi Anda. AndroidX Test menyertakan
Runner pengujian JUnit 4 ,AndroidJUnitRunner
, dan API untuk pengujian UI fungsional
seperti Espresso, UI Automator, dan pengujian Compose.
Anda juga perlu mengonfigurasi dependensi pengujian Android untuk project Anda agar menggunakan runner pengujian dan API aturan yang disediakan oleh AndroidX Test.
Di file build.gradle
tingkat teratas aplikasi, Anda harus menentukan library ini
sebagai dependensi:
dependencies {
androidTestImplementation "androidx.test:runner:$androidXTestVersion"
androidTestImplementation "androidx.test:rules:$androidXTestVersion"
// Optional -- UI testing with Espresso
androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
// Optional -- UI testing with UI Automator
androidTestImplementation "androidx.test.uiautomator:uiautomator:$uiAutomatorVersion"
// Optional -- UI testing with Compose
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
}
Anda dapat menemukan versi terbaru di Catatan Rilis AndroidX dan Compose Catatan Rilis UI.
Untuk menggunakan kelas pengujian JUnit 4 dan mendapatkan akses ke fitur-fitur seperti penyaringan pengujian,
pastikan untuk menentukan AndroidJUnitRunner sebagai instrumentasi pengujian default
di project Anda dengan menyertakan setelan berikut dalam atribut
file build.gradle
level modul:
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
Membuat class pengujian berinstrumen
Class pengujian berinstrumen Anda harus berupa class pengujian JUnit 4 yang serupa dengan class yang dijelaskan di bagian tentang cara membuat pengujian lokal.
Untuk membuat class pengujian JUnit 4 berinstrumen, tentukan AndroidJUnit4
sebagai
runner pengujian default.
Contoh berikut menunjukkan cara menulis uji instrumentasi untuk memverifikasi
bahwa antarmuka Parcelable diterapkan dengan benar untuk
Class LogHistory
:
Kotlin
import android.os.Parcel import android.text.TextUtils.writeToParcel import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith const val TEST_STRING = "This is a string" const val TEST_LONG = 12345678L // @RunWith is required only if you use a mix of JUnit3 and JUnit4. @RunWith(AndroidJUnit4::class) @SmallTest class LogHistoryAndroidUnitTest { private lateinit var logHistory: LogHistory @Before fun createLogHistory() { logHistory = LogHistory() } @Test fun logHistory_ParcelableWriteRead() { val parcel = Parcel.obtain() logHistory.apply { // Set up the Parcelable object to send and receive. addEntry(TEST_STRING, TEST_LONG) // Write the data. writeToParcel(parcel, describeContents()) } // After you're done with writing, you need to reset the parcel for reading. parcel.setDataPosition(0) // Read the data. val createdFromParcel: LogHistory = LogHistory.CREATOR.createFromParcel(parcel) createdFromParcel.getData().also { createdFromParcelData: List<Pair<String, Long>> -> // Verify that the received data is correct. assertThat(createdFromParcelData.size).isEqualTo(1) assertThat(createdFromParcelData[0].first).isEqualTo(TEST_STRING) assertThat(createdFromParcelData[0].second).isEqualTo(TEST_LONG) } } }
Java
import android.os.Parcel; import android.util.Pair; import androidx.test.runner.AndroidJUnit4; import com.google.common.truth.Truth.assertThat; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; // @RunWith is required only if you use a mix of JUnit3 and JUnit4. @RunWith(AndroidJUnit4.class) public class LogHistoryAndroidUnitTest { public static final String TEST_STRING = "This is a string"; public static final long TEST_LONG = 12345678L; private LogHistory mLogHistory; @Before public void createLogHistory() { mLogHistory = new LogHistory(); } @Test public void logHistory_ParcelableWriteRead() { // Set up the Parcelable object to send and receive. mLogHistory.addEntry(TEST_STRING, TEST_LONG); // Write the data. Parcel parcel = Parcel.obtain(); mLogHistory.writeToParcel(parcel, mLogHistory.describeContents()); // After you're done with writing, you need to reset the parcel for reading. parcel.setDataPosition(0); // Read the data. LogHistory createdFromParcel = LogHistory.CREATOR.createFromParcel(parcel); List<Pair<String, Long>> createdFromParcelData = createdFromParcel.getData(); // Verify that the received data is correct. assertThat(createdFromParcelData.size()).isEqualTo(1); assertThat(createdFromParcelData.get(0).first).isEqualTo(TEST_STRING); assertThat(createdFromParcelData.get(0).second).isEqaulTo(TEST_LONG); } }
Menjalankan uji instrumentasi
Pengujian berinstrumen dapat dijalankan pada perangkat atau emulator sungguhan. Di Android Panduan Studio, Anda dapat mempelajari cara:
Referensi lainnya
Pengujian UI biasanya adalah Pengujian berinstrumen yang memverifikasi perilaku yang benar dari UI. Alat tersebut menggunakan framework seperti Espresso atau Compose Test. Untuk mempelajari selengkapnya, baca Panduan pengujian UI.
Untuk mengetahui informasi selengkapnya tentang penggunaan Uji instrumentasi, lihat referensi Google Cloud Platform.