Jika Anda menjalankan Service
lokal sebagai komponen
aplikasi Anda, Anda harus menguji Service
untuk memastikan bahwa aplikasi Anda tidak berperilaku dengan
cara yang tidak terduga. Anda dapat membuat
pengujian unit berinstrumen untuk memverifikasi bahwa perilaku di Service
benar; misalnya, layanan menyimpan dan mengembalikan nilai data yang valid dan menjalankan
operasi data dengan benar.
AndroidX Test menyediakan API untuk
menguji objek Service
Anda secara terpisah. Class
ServiceTestRule
adalah aturan JUnit 4 yang memulai layanan Anda sebelum metode pengujian unit Anda
berjalan, dan menonaktifkan layanan setelah pengujian selesai. Dengan menggunakan aturan pengujian ini, Anda memastikan bahwa
koneksi ke layanan selalu dibuat sebelum metode pengujian Anda berjalan. Untuk
mempelajari lebih lanjut aturan JUnit 4, lihat dokumentasi JUnit.
Catatan: Class
ServiceTestRule
tidak mendukung pengujian objek IntentService
.
Jika Anda perlu menguji objek IntentService
, Anda harus mengenkapsulasi logika
di class terpisah dan membuat pengujian unit yang sesuai sebagai gantinya.
Menyiapkan lingkungan pengujian Anda
Sebelum mem-build pengujian integrasi Anda untuk layanan ini, pastikan untuk mengonfigurasi project Anda untuk pengujian berinstrumen, seperti yang dijelaskan dalam Menyiapkan project untuk AndroidX Test.
Membuat pengujian integrasi untuk layanan
Pengujian integrasi Anda harus ditulis sebagai class pengujian JUnit 4. Untuk mempelajari lebih lanjut cara membuat class pengujian JUnit 4 dan menggunakan metode pernyataan JUnit 4, lihat Membuat class pengujian unit berinstrumen.
Untuk membuat pengujian integrasi untuk layanan Anda, tambahkan anotasi @RunWith(AndroidJUnit4::class)
di awal definisi class pengujian Anda. Anda juga harus menentukan class
AndroidJUnitRunner
yang disediakan AndroidX Test
sebagai runner pengujian default Anda. Langkah ini dideskripsikan lebih detail dalam
Menjalankan Pengujian Unit Berinstrumen.
Berikutnya, buat instance
ServiceTestRule
dalam pengujian Anda menggunakan anotasi @Rule
.
Kotlin
@get:Rule val serviceRule = ServiceTestRule()
Java
@Rule public final ServiceTestRule serviceRule = new ServiceTestRule();
Contoh berikut menunjukkan kemungkinan cara Anda menjalankan pengujian integrasi untuk layanan.
Metode pengujian testWithBoundService
memverifikasi bahwa aplikasi berhasil mengikat ke
layanan lokal dan antarmuka layanan berperilaku dengan benar.
Kotlin
@Test @Throws(TimeoutException::class) fun testWithBoundService() { // Create the service Intent. val serviceIntent = Intent( ApplicationProvider.getApplicationContext<Context>(), LocalService::class.java ).apply { // Data can be passed to the service via the Intent. putExtra(SEED_KEY, 42L) } // Bind the service and grab a reference to the binder. val binder: IBinder = serviceRule.bindService(serviceIntent) // Get the reference to the service, or you can call // public methods on the binder directly. val service: LocalService = (binder as LocalService.LocalBinder).getService() // Verify that the service is working correctly. assertThat(service.getRandomInt(), `is`(any(Int::class.java))) }
Java
@Test public void testWithBoundService() throws TimeoutException { // Create the service Intent. Intent serviceIntent = new Intent(ApplicationProvider.getApplicationContext(), LocalService.class); // Data can be passed to the service via the Intent. serviceIntent.putExtra(LocalService.SEED_KEY, 42L); // Bind the service and grab a reference to the binder. IBinder binder = serviceRule.bindService(serviceIntent); // Get the reference to the service, or you can call // public methods on the binder directly. LocalService service = ((LocalService.LocalBinder) binder).getService(); // Verify that the service is working correctly. assertThat(service.getRandomInt()).isAssignableTo(Integer.class); }
Menjalankan pengujian integrasi untuk layanan
Anda dapat menjalankan pengujian integrasi dari Android Studio atau
dari command line. Pastikan untuk menentukan
AndroidJUnitRunner
sebagai runner instrumentasi default dalam project Anda.
Untuk menjalankan pengujian integrasi untuk layanan Anda, ikuti langkah-langkah untuk menjalankan pengujian berinstrumen yang dijelaskan dalam Memulai pengujian.
Anda sebaiknya juga membaca Layanan.
Referensi lainnya
Untuk mempelajari topik ini lebih lanjut, lihat referensi tambahan berikut.