Espresso Test Çerçevesi - Test Kaydedici

Test vakası yazmak sıkıcı bir iştir. Espresso çok kolay ve esnek bir API sağlasa da, test senaryoları yazmak tembel ve zaman alıcı bir görev olabilir. Bunun üstesinden gelmek için Android stüdyosu, espresso test durumlarını kaydetme ve oluşturma özelliği sunar. Espresso Testini Kaydet , Çalıştır menüsünde bulunur.

Aşağıda açıklanan adımları izleyerek HelloWorldApp'ımıza basit bir test durumu kaydedelim ,

  • Android stüdyosunu ve ardından HelloWorldApp uygulamasını açın.

  • ÇalıştırEspresso testini kaydet'i tıklayın ve MainActivity'yi seçin .

  • Kaydedici ekran olarak, aşağıda sunulmuştur

  • Onay Ekle'yi tıklayın . Aşağıda gösterildiği gibi uygulama ekranını açacaktır,

  • Merhaba Dünya'yı tıklayın ! . Kaydedici ekran metni seçer görünümü aşağıdaki gibi olduğu

  • Tekrar Onaylamayı Kaydet'i tıklayın. Bu, iddiayı kaydedecek ve aşağıdaki gibi gösterecektir,

  • Tıklayın Tamam . Yeni bir pencere açacak ve test senaryosunun adını soracaktır. Varsayılan ad MainActivityTest'tir

  • Gerekirse test senaryosu adını değiştirin.

  • Yine, tıklayın Tamam . Bu, kaydedilmiş test durumumuzla MainActivityTest adlı bir dosya oluşturacaktır . Tam kodlama aşağıdaki gibidir,

package com.tutorialspoint.espressosamples.helloworldapp;

import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;

import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import androidx.test.espresso.ViewInteraction;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;

@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
   @Rule
   public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
   @Test
   public void mainActivityTest() {
      ViewInteraction textView = onView(
         allOf(withId(R.id.textView_hello), withText("Hello World!"),
         childAtPosition(childAtPosition(withId(android.R.id.content),
         0),0),isDisplayed()));
      textView.check(matches(withText("Hello World!")));
   }
   private static Matcher<View> childAtPosition(
      final Matcher<View> parentMatcher, final int position) {
      return new TypeSafeMatcher<View>() {
         @Override
         public void describeTo(Description description) {
            description.appendText("Child at position " + position + " in parent ");
            parentMatcher.describeTo(description);
         }
         @Override
         public boolean matchesSafely(View view) {
            ViewParent parent = view.getParent();
            return parent instanceof ViewGroup &&
               parentMatcher.matches(parent)&& view.equals(((ViewGroup)
               parent).getChildAt(position));
         }
      };
   }
}
  • Son olarak, bağlam menüsünü kullanarak testi çalıştırın ve test senaryosunun çalışıp çalışmadığını kontrol edin.