Aturan JUnit4 dengan AndroidX Test

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

Contoh

  • BasicSample: Penggunaan ActivityScenarioRule sederhana.