CategoriesAndroidAutomated testsProgramming

Menggunakan EspressoIdlingResource untuk UI Testing di Android

UI Testing di Android sangat bermanfaat dalam development, karena mempercepat proses development dan debugging. Developer tidak perlu capek-capek klik klik dan scroll hp untuk testing aplikasi karena semua serba otomatis di UI Testing. ada satu masalah yang sering dihadapi saat UI Testing yaitu saat ada Activity yang me request data dari API seringkali membuat Activity stuck tampilannya hingga membuat testing yang berjalan jadi Error. untuk menghadapi kasus seperti ini kita memerlukan EspressoIdlingResource.

apa itu EspressoIdlingResource ? EspressoIdlingResource adalah library dari Espresso yang memungkinkan kita untuk meng pause proses testing yang ada saat ada operasi yang membutuhkan waktu yang lama untuk selesai lalu memulai lagi testing saat operasi sudah selesai.

langkah pertama install library untuk EspressIdlingResource di build.gradle (app)

implementation "androidx.test.espresso:espresso-idling-resource:3.4.0"

Setelah itu bikin satu Object baru di package main (bukan di folder test), beri nama EspressoIdlingResource.

import androidx.annotation.VisibleForTesting
import androidx.test.espresso.idling.CountingIdlingResource

object EspressoIdlingResource {
    private const val RESOURCE = "GLOBAL"

    @VisibleForTesting
    @JvmField
    val countingIdlingResource = CountingIdlingResource(RESOURCE)

    fun increment() {
        countingIdlingResource.increment()
    }

    fun decrement() {
        if (!countingIdlingResource.isIdleNow) {
            countingIdlingResource.decrement()
        }
    }
}

untuk meng pause testing saat loading data kita menggunakan EspressoIdlingResource.increment() dan kita gunakan EspressoIdlingResource.decrement() untuk melanjutkan test kembali. contoh penerapannya di Activity adalah sebagai berikut :

disitu kita panggil method increment() sebelum aplikasi merequest data, lalu kita memanggil method decrement() saat data sudah dipasang di adapter

lalu untuk meng inisialisasi EspressoIdlingResource di kode nya adalah sebagai berikut :

di testing nya kita langsung mengecek apakah recyclerviewnya sudah ditampilkan atau tidak, seperti berikut :

oh iya jangan lupa mematikan animasi di device emulator agar testing nya tidak error. bisa juga mematikan animasinya dari build.gradle (app) dengan menambahkan kode berikut :

android {
  ....
  testOptions {
      animationsDisabled = true
  }
  ....
}

Published by Ahmad Saifur Ridlo

Android Developer at Algostudio.net

Leave a Reply

Your email address will not be published.