AndroidX Test menyertakan sekumpulan aturan JUnit untuk digunakan dengan AndroidJUnitRunner. Aturan JUnit memberikan lebih banyak fleksibilitas dan mengurangi kode boilerplate yang diperlukan dalam pengujian. Misalnya, parameter tersebut dapat digunakan untuk memulai aktivitas tertentu.
ActivityScenarioRule
Aturan ini menyediakan pengujian fungsional satu aktivitas. Aturan tersebut meluncurkan
aktivitas yang dipilih sebelum setiap pengujian yang dianotasi dengan @Test
, serta sebelum
metode apa pun yang dianotasi dengan @Before
. Aturan ini menghentikan aktivitas setelah
pengujian selesai dan semua metode yang dianotasi dengan @After
selesai. Untuk mengakses aktivitas yang diberikan
dalam logika pengujian Anda, sediakan callback yang dapat dijalankan ke
ActivityScenarioRule.getScenario().onActivity()
.
Cuplikan kode berikut menunjukkan cara menyertakan
ActivityScenarioRule
ke dalam logika pengujian Anda:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityScenarioRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { activityRule.scenario.onActivity { … } // Optionally, access the activity. } }
Java
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
Aturan ini menyediakan mekanisme yang disederhanakan untuk meluncurkan layanan Anda sebelum
pengujian dan mematikannya sebelum dan sesudah. Anda dapat memulai atau mengikat layanan
dengan salah satu metode helper. Pengujian ini otomatis berhenti atau terlepas setelah pengujian
selesai dan metode apa pun yang dianotasi dengan @After
telah selesai.
Kotlin
@RunWith(AndroidJUnit4::class.java) @MediumTest class MyServiceTest { @get:Rule val serviceRule = ServiceTestRule() @Test fun testWithStartedService() { serviceRule.startService( Intent(ApplicationProvider.getApplicationContext<Context>(), MyService::class.java)) // Add your test code here. } @Test fun testWithBoundService() { val binder = serviceRule.bindService( Intent(ApplicationProvider.getApplicationContext(), MyService::class.java)) val service = (binder as MyService.LocalBinder).service assertThat(service.doSomethingToReturnTrue()).isTrue() } }
Java
@RunWith(AndroidJUnit4.class) @MediumTest public class MyServiceTest { @Rule public final ServiceTestRule serviceRule = new ServiceTestRule(); @Test public void testWithStartedService() { serviceRule.startService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); // Add your test code here. } @Test public void testWithBoundService() { IBinder binder = serviceRule.bindService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); MyService service = ((MyService.LocalBinder) binder).getService(); assertThat(service.doSomethingToReturnTrue()).isTrue(); } }
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang penggunaan aturan JUnit dalam pengujian Android, lihat referensi berikut.
Dokumentasi
- Panduan Menguji fragmen Anda, untuk menguji fragmen secara terpisah.
- Menguji tata letak Compose, untuk menguji UI yang dibuat dengan Compose.
Contoh
- BasicSample: Penggunaan
ActivityScenarioRule
sederhana.