Sunday, March 18, 2018

Android UI Testing with Espresso

Espresso adalah android java library oleh Google untuk membantu Android developer melakukan User Interface (UI) Testing. Selain Espresso ada testing tools lainnya seperti Calabash, Selendroid, Appium, Robotium, dan lain-lain.

Misalnya kita punya sebuah app untuk memesan tiket pesawat.

Jika kita melakukan UI test secara manual, langkah-langkah yang dilakukan kurang lebih seperti ini:
1. Buka aplikasi dan cari button "Order"
2. Klik button "Order"
3. Cek apakah halaman summary order terbuka

Langkah-langkah tersebut bisa digeneralisasikan menjadi:
1. Find the view
2. Perform action on the view
3. Check if the view does what you expected

Ketiga langkah general tadi merupakan konsep yg digunakan Espresso. Berikut adalah penggunaan code di Espresso:
1. Find the view
    onView(ViewMatcher)
   
ViewMatcher adalah method membantu kita untuk menspesifikasikan view yang akan kita test.
contoh: onView( withId( R.id.order_button )
   
2. Perform action on the view
     .perform( ViewAction )

ViewAction adalah method untuk menspesifikasikan action apa yang akan kita lakukan terhadap view.
contoh: onView( withId( R.id.order_button )
              .perform( click() )

3. Check if the view does what you expected
     .check( ViewAssertion )

ViewAssertion adalah method untuk membantuk kita  melakukan cek terhadap view. 
contoh: onView( withId( R.id.order_summary )
             .check( isDisplayed() )

Untuk melihat method ViewMatcher, ViewAction, dan ViewAssertion lainnya, bisa dilihat disini

Setup awal penggunaan Espresso, pertama tambahkan pada build.gradle didalam "android.defaultConfig":


dan tambahkan pada dependencies:


Selanjutnya pada package folder buat class "TestingExample"

Misalnya kita membuat view xml tediri dari tiga EditText dan satu Button, seperti ini

Jika ingin melakukan test sederhana, maka tambahkan code pada "TestingExample", seperti ini

Jangan lupa untuk menambahkan anotasi @RunWith(AndroidJUnitx.class). Anotasi @Rule untuk menspesifikasikan activity mana yang akan kita test. Lalu buat method dibawah anotasi @Test yang berisi testing yang akan dilakukan.

Contoh diatas method "checkViewDisplayed()" untuk test apakah ketiga EditText ter-display.
method "checkErrorMessage..." untuk cek jika field kosong apakah akan muncul text error
method "checkSuccessSaved()" untuk mengisi EditText dengan data dummy dan test button save. 

Cara menjalankan code diatas klik kanan pada class "TestingExample" lalu pilih run, lihat keajaiban terjadi. Selamat mencoba :)

Referensi:


No comments:

Post a Comment