Espresso is a testing framework for Android to make it easy to write reliable user interface tests — unkown
Dasar Espresso
onView(ViewMatcher) // Finds the view
.perform(ViewAction) // Performs an action on the view
.check(ViewAssertion); // Validates a assertion
Pengaturan Espresso
- Atur Android Support Repository, caranya Tools>Android>SDK Manager>SDK Tools>Support Repository. Kemudian check semua daftar repository dan apply. Apply dan Ok.
- Konfigurasi JUnit sebagai framework pengujian (Espresso dan UI Automator). JUnit adalah framework pengujian unit yang paling populer dan banyak digunakan untuk Java. Jika Anda belum memiliki JUnit, dapatkan di http://junit.org/junit4/. (Disarankan menggunakan JUnit versi 4.12).
- Kemudian pada gradle.app tambahkan dependencies :
dependencies
androidTestCompile (‘com.android.support.test.espresso:espresso-core:2.2.2’, { exclude group: ‘com.android.support’, module: ‘support-annotations’
testCompile 'junit:junit:4.12'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}
- Tambahkan JUNIT_HOME dengan cara My Computer>Properties> Advances system settings>Advanced>Environtment variables>System variables>New>…
- Nonaktifkan Animasi dikarenakan animasi bersifat berat dan memperlambat kinerja sistem sehingga memungkinkan terjadinya gagal dalam pengujian. Cara menonaktifkannya yaitu ubah pengaturan pada smartphone. Settings>Developer options>Drawing>Non aktifkan Window animation scale, Transition animation scale, dan Animator duration scale. Ok.
Contoh Espresso Testing
- Buka projek Android Studio dengan tipe Project
- Cari direktori src/androidTest/java/com.example.package dan buka class ExampleInstrumentedTest.
- Ubah class ExampleInstrumentedTest menjadi :
import android.support.test.InstrumentationRegistry
import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.action.ViewActions.click
import android.support.test.espresso.matcher.ViewMatchers.withId
import android.support.test.rule.ActivityTestRule
import android.support.test.runner.AndroidJUnit4
import com.app.macbook.trykotlin.activity.BangunDatarActivity
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
import com.app.macbook.trykotlin.activity.MainActivity
import org.junit.Rule
import android.support.test.espresso.matcher.ViewMatchers.isDisplayed
import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.assertion.ViewAssertions.matches
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ActivityInputOutputTest {
@Rule
var mActivityRule = ActivityTestRule(
BangunDatarActivity::class.java)
@Test
fun activityLaunch() {
onView(withId(R.id.btn_hitung)).perform(click())
onView(withId(R.id.tv_total)).check(matches(isDisplayed()))
}
}
@RunWith : inisialisasi kelas pengujian
@Rule : deklar semua function yang digunakan
onView : deklar semua variabel yang digunakan
- Klik kanan pada kelas ExampleInstrumentedTest kemudian ‘Run ExampleInstrumentedTest’. Hasil pengujian akan ditampilkan di logcat. Tentunya hasil pengujian ini lebih detail jika dibandingkan dengan pengujian manual. Selesai selamat mencoba.