Jika Anda menerapkan Service
lokal sebagai komponen aplikasi, Anda
dapat membuat uji instrumentasi untuk memverifikasi bahwa perilakunya benar.
AndroidX Test menyediakan API untuk menguji objek Service
Anda di
isolasi. Class ServiceTestRule
adalah aturan JUnit 4 yang memulai
sebelum metode pengujian unit Anda berjalan, dan mematikan layanan setelah
pengujian selesai. Untuk mempelajari aturan JUnit 4 lebih lanjut, lihat JUnit
dokumentasi tambahan.
Menyiapkan lingkungan pengujian Anda
Sebelum membuat pengujian integrasi untuk layanan, pastikan untuk mengonfigurasi project Anda untuk uji instrumentasi, 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 tentang membuat class pengujian JUnit 4 dan menggunakan metode pernyataan JUnit 4, lihat Buat class pengujian berinstrumen.
Buat instance ServiceTestRule
dalam pengujian Anda menggunakan @Rule
anotasi.
Kotlin
@get:Rule val serviceRule = ServiceTestRule()
Java
@Rule public final ServiceTestRule serviceRule = new ServiceTestRule();
Contoh berikut menunjukkan cara menerapkan pengujian integrasi untuk
layanan. Metode pengujian testWithBoundService()
memverifikasi bahwa aplikasi mengikat
ke layanan lokal dan bahwa 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); }
Referensi lainnya
Untuk mempelajari topik ini lebih lanjut, lihat referensi tambahan berikut.