Aturan JUnit4 dengan AndroidX Test

AndroidX Test mencakup serangkaian aturan JUnit untuk 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 diuji diluncurkan sebelum masing-masing pengujian dianotasi dengan @Test dan sebelum metode apa pun dianotasi dengan @Before. Aktivitas 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 menyertakan 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 ini menunjukkan cara menerapkan 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. Hal ini juga menjamin bahwa layanan berhasil terhubung saat memulai atau mengikat suatu layanan. Layanan dapat dimulai atau diikat menggunakan salah satu metode helper. Metode tersebut otomatis berhenti atau melepas ikatan setelah pengujian selesai dan metode apa pun yang dianotasi dengan @After 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