Bu cevap, Android testine yeni başlayan kişiler içindir. Testin nasıl çalıştığını görmenize yardımcı olacak iki basit örnek vereceğim. Önümüzdeki 10 dakika boyunca takip ederseniz, testlerinizi kendi uygulamanıza eklemeye hazır olacaksınız. Sanırım ne kadar kolay olduğuna şaşıracaksınız. Ben kesinlikle öyleydim.
Android Testine Giriş
Yapacağınız iki farklı test türü vardır.
- Yerel birim testleri. Bunlar yerel olarak JVM'de (Java Sanal Makinesi) çalıştırılır. Yerel oldukları için hızlılar. Kodunuzun Android API'lerine değil, yalnızca Java'ya ihtiyaç duyan kısımlarını test etmek için bunları kullanabilirsiniz. (Bazen yerel olarak daha fazla şeyi test etmek için sahte bir API nesnesi yapabilirsiniz. Buna alay denir . Sahte
Context
bir örnektir.)
- Aletli testler. Bu testler gerçek bir cihazda veya emülatörde çalıştırılır. Bu onları yerel testlerden daha yavaş yapar. Ancak, tam Android API'ye sahip olduğunuz için daha esnektirler.
Yeni bir proje oluşturun ve aşağıdaki varsayılan klasörleri göreceksiniz.
Her şey zaten orada ve testlerinizi oluşturmanız için sizi bekliyor. Hepsi zaten kuruldu!
Yerel birim testleri nasıl oluşturulur?
ExampleUnitTest
Yukarıdaki resimde gösterilen dosyayı açın . Bunun gibi bir şeye benzemeli:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Tüm testleri çalıştırmak için çift yeşil oka veya yalnızca birini çalıştırmak için tek yeşil oka basın. (Bu durumda tek bir test olduğundan ikisi de aynı şeyi yapar.)
Geçmelidir ( bu cevabı okurken 2 + 2
hareketsiz 4
kaldığı sürece ). Tebrikler, az önce ilk testinizi yaptınız!
Kendi testinizi yapmak
Kendi testimizi yazalım. Öncelikle bu sınıfı ana uygulama projenize ekleyin, böylece test edilecek bir şeyimiz olsun:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Şimdi addition_isCorrect()
test sınıfındaki yöntemi aşağıdaki kod gibi olacak şekilde değiştirin (veya yalnızca farklı bir ada sahip başka bir yöntem ekleyin):
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
Tekrar çalıştırın ve geçtiğini görmelisiniz. Tebrikler, kendi ilk testinizi oluşturdunuz! (Sanırım teknik olarak benimdi, ama, hey, yeterince yakın. Benim olan senin.)
Aletli testler nasıl oluşturulur
ExampleInstrumentedTest
Dosyayı açın . Bunun gibi bir şeye benzemeli:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
Bu yeşil düğmelerden birine tekrar basın.
Bağlı gerçek bir cihazınız olduğu veya emülatörün kurulduğu sürece, onu başlatmalı ve uygulamanızı çalıştırmalıdır. Tebrikler, az önce aletli ilk testinizi yaptınız!
Kendi testinizi yapmak
Aletli testler , testleri çalıştırmak için Espresso kullanır. Uygulamanızı test ettirebileceğiniz kendi küçük robot kullanıcınız gibidir. Bir düğmeye basmak veya TextView özelliklerini okumak gibi bir şey yapmasını söyleyebilirsiniz.
Testin nasıl yapılacağına dair talimatları elle yazabilirsiniz, ancak daha yeni başladığımız için otomatik kayıt işlevini kullanalım . Bu çok basit.
Öncelikle kullanıcı arayüzünüze bir düğme ekleyin, böylece üzerinde çalışacak bir şeyimiz olsun. Bunu ben yaptı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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
Ardından menüde Çalıştır> Espresso Testini Kaydet'e basın .
Başladıktan sonra, öykünücüdeki düğmeyi tıklayın ve ardından bitirmek için Kayıt iletişim kutusunda Tamam'ı seçin. Aşağıdaki test kodunu otomatik olarak oluşturmalıdır.
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
Harika! İlk enstrümantasyonlu testi yarattınız! Bu çok kolaydı. Bunu gerçek bir test yapmak için muhtemelen bir iddia eklemelisiniz, ancak bunu kayıt cihazı için de yapmak oldukça kolaydır. Bu videoyu izleyinBiraz daha derine inmek için .
İlerideki çalışma
Önce videoları izler, sonra belgeleri okurdum. Hepsi oldukça faydalı. Son bağlantı, neyin test edileceğini seçerken düşünülmesi gereken bazı önemli şeyleri kapsayan bir dizi makaledir.