AndroidX Test mencakup serangkaian aturan JUnit yang akan digunakan dengan AndroidJUnitRunner
. Aturan JUnit memberikan fleksibilitas lebih dan mengurangi kode boilerplate yang diperlukan dalam pengujian.
ActivityTestRule
Aturan ini menyediakan pengujian fungsional satu aktivitas. Aktivitas yang sedang diuji diluncurkan sebelum masing-masing pengujian dianotasi dengan @Test
dan sebelum metode apa pun dianotasi dengan @Before
. Pengujian ini dihentikan setelah pengujian selesai dan semua metode yang dianotasi dengan @After
telah selesai. Untuk mengakses aktivitas yang sedang diuji dalam logika pengujian Anda, panggil ActivityTestRule.getActivity()
.
Catatan: AndroidX Test meliputi API lain, ActivityScenario
, yang saat ini dalam versi beta. API ini bekerja di berbagai lingkungan pengujian dan memberikan keamanan thread dalam pengujian yang menggunakannya.
Sebaiknya coba API ini untuk mengetahui bagaimana API ini dapat membantu Anda mengarahkan siklus proses aktivitas aplikasi Anda.
Cuplikan kode berikut menunjukkan cara menggabungkan ActivityTestRule
ke dalam logika pengujian Anda:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityTestRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { ... } }
Java
@RunWith(AndroidJUnit4.class) @LargeTest public class MyClassTest { @Rule public ActivityTestRule<MyClass> activityRule = new ActivityTestRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
Aturan ini menyediakan mekanisme yang disederhanakan untuk memulai dan mematikan layanan Anda sebelum dan sesudah pengujian. Layanan tersebut juga menjamin bahwa layanan berhasil terhubung saat memulai layanan atau mengikat suatu layanan. Layanan dapat dimulai atau diikat menggunakan salah satu metode helper. Pengujian ini otomatis terhenti atau melepas ikatan 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 menggunakan aturan JUnit dalam pengujian Android, lihat referensi berikut.
Contoh
- BasicSample: Penggunaan sederhana
ActivityTestRule
.