AndroidX Test mencakup serangkaian aturan JUnit untuk digunakan dengan AndroidJUnitRunner. Aturan JUnit memberikan lebih banyak fleksibilitas dan mengurangi kode boilerplate yang diperlukan dalam pengujian. Misalnya, mereka dapat digunakan untuk memulai aktivitas tertentu.
ActivityScenarioRule
Aturan ini menyediakan pengujian fungsional satu aktivitas. Aturan diluncurkan
aktivitas yang dipilih sebelum setiap pengujian dianotasi dengan @Test
, serta sebelumnya
metode apa pun yang dianotasi dengan @Before
. Aturan ini menghentikan aktivitas setelah
pengujian selesai dan semua metode yang dianotasi dengan selesai @After
. Untuk mengakses
aktivitas dalam logika pengujian Anda, sediakan callback yang dapat dijalankan ke
ActivityScenarioRule.getScenario().onActivity()
.
Cuplikan kode berikut menunjukkan cara menerapkan
ActivityScenarioRule
ke logika pengujian Anda:
@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.
}
}
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
tes dan mematikannya sebelum dan sesudahnya. Anda dapat memulai atau mengikat
layanan dengan
salah satu metode bantuan. Otomatis berhenti atau melepas ikatan setelah pengujian
selesai dan semua metode yang dianotasi dengan @After
telah selesai.
@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()
}
}
@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 informasi selengkapnya tentang menggunakan 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 sederhana
ActivityScenarioRule
.