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ır → Espresso 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.