Espresso ile Android UI Test

Güncelleme tarihi: 7 Haz 2021

Test, uygulama geliştirme sürecinin önemli bir parçasıdır


Hali hazırda çalışan bir uygulamamızda geliştirme yaparken ( özellikle büyük çaplı projelerde geliştirme yaparken ) herhangi bir değişiklik veya güncelleme durumunda uygulamamızdaki özelliklerin doğru bir şekilde çalışıp çalışmadığını bilmek isteriz.



Bu sayede kullanıcı etkileşimlerini tek bir uygulamada arayüzün doğru bir şekilde çalışıp çalışmadığını test etmek ve beklenmeyen sonuçları engellemek adına Android 'in bize sunmuş olduğu kütüphanelerden faydalanabiliriz. Kullanıcı arayüz testi (UI Test) uygulama üzerinde kullanıcı işlemlerini gerçekleştirerek işlemlerin doğru şekilde çalışıp çalışmadığını kontrol eder. Bu testler manuel şekilde zaman kayıplarına ve hatalara sebebiyet verebilir. Android Studio, UI testlerini manuelden kurtarıp otomatikleştirmek için kütüphanelere sahiptir. Bu yazıda UI testi kütüphanesi olan Espresso kütüphanesinden bahsedeceğiz ve çalışan örnek bir test demo'su gerçekleştireceğiz.




Espresso, Android için güvenilir kullanıcı arayüzü testlerini yazmamızı kolaylaştıran bir Framework'dür. Test işlemleri kullanıcı arayüzü ile senkron bir şekilde çalışabilecek yapıya sahiptir.


Öncelikle Espresso'yu projemize dahil ederek başlayalım


 //espresso test
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'

Test etmek istediğimiz xml ve activity'leri tamamlayalım. Ben xml'in görünümünü şu şekilde ayarladım:


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Kullanıcı Kayıt!"
            android:textSize="18dp"
            android:id="@+id/tvTitle"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/>
    <EditText
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@+id/tvTitle"
            android:layout_margin="60dp"
            android:id="@+id/edtName"
            android:hint="İsim"/>
    <EditText
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/edtName"
            android:id="@+id/edtPass"
            android:hint="Şifre"/>
    <EditTex