Ta odpowiedź jest dla osób, które dopiero zaczynają testowanie Androida. Podam dwa proste przykłady, które pomogą Ci zobaczyć, jak działa testowanie. Jeśli będziesz śledzić kolejne 10 minut, wszystko będzie gotowe do rozpoczęcia dodawania testów do własnej aplikacji. Myślę, że będziesz zaskoczony, jakie to proste. Z pewnością tak.
Wprowadzenie do testowania Androida
Istnieją dwa różne rodzaje testów, które możesz wykonać.
- Lokalne testy jednostkowe. Są one uruchamiane lokalnie na JVM (wirtualnej maszynie języka Java). Ponieważ są lokalne, są szybkie. Możesz ich użyć do testowania części kodu, które wymagają tylko języka Java, a nie interfejsów API systemu Android. (Czasami możesz stworzyć fałszywy obiekt API, aby przetestować więcej rzeczy lokalnie. Nazywa się to mockowaniem . Przykładem
Context
jest mock ).
- Testy instrumentalne. Te testy są uruchamiane na prawdziwym urządzeniu lub w emulatorze. To sprawia, że są wolniejsze niż testy lokalne. Są jednak bardziej elastyczne, ponieważ masz dostęp do pełnego interfejsu API systemu Android.
Utwórz nowy projekt, a zobaczysz następujące domyślne foldery.
Wszystko już jest i czeka, aż stworzysz testy. Wszystko jest już skonfigurowane!
Jak tworzyć lokalne testy jednostkowe
Otwórz ExampleUnitTest
plik pokazany na powyższym obrazku. powinno wyglądać mniej więcej tak:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Naciśnij podwójną zieloną strzałkę, aby uruchomić wszystkie testy, lub pojedynczą zieloną strzałkę, aby uruchomić tylko jeden. (W tym przypadku jest tylko jeden test, więc obaj robią to samo).
Powinien minąć (o ile 2 + 2
nadal 4
jest czytany w tej odpowiedzi). Gratulacje, właśnie przeprowadziłeś pierwszy test!
Wykonywanie własnego testu
Napiszmy nasz własny test. Najpierw dodaj tę klasę do głównego projektu aplikacji, abyśmy mieli coś do przetestowania:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Teraz zmień addition_isCorrect()
metodę w klasie testowej tak, aby była podobna do poniższego kodu (lub po prostu dodaj inną metodę o innej nazwie):
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);
}
}
Uruchom go ponownie i powinieneś zobaczyć, jak minął. Gratulacje, właśnie stworzyłeś swój pierwszy test! (No cóż, technicznie rzecz biorąc, to było moje, ale, hej, wystarczająco blisko. Co moje, jest twoje.)
Jak tworzyć testy instrumentalne
Otwórz ExampleInstrumentedTest
plik. powinno wyglądać mniej więcej tak:
@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());
}
}
Naciśnij ponownie jeden z tych zielonych przycisków.
Jeśli masz podłączone prawdziwe urządzenie lub skonfigurowany emulator, powinien on je uruchomić i uruchomić aplikację. Gratulacje, właśnie przeprowadziłeś swój pierwszy test instrumentalny!
Wykonywanie własnego testu
Testy instrumentalne wykorzystują espresso do przeprowadzania testów. To trochę jak twój własny mały użytkownik robota, który możesz przetestować swoją aplikację. Możesz powiedzieć mu, aby zrobił coś takiego, jak naciśnięcie przycisku lub odczytanie właściwości TextView.
Możesz napisać instrukcje, jak wykonać test ręcznie, ale ponieważ dopiero zaczynamy, użyjmy funkcji automatycznego nagrywania . To bardzo proste.
Najpierw dodaj przycisk do swojego interfejsu użytkownika, abyśmy mieli nad czym pracować. Ja to zrobiłem:
<?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>
Następnie w menu naciśnij Uruchom> Nagraj test espresso .
Po uruchomieniu kliknij przycisk w emulatorze, a następnie, aby zakończyć, wybierz OK w oknie dialogowym Nagraj. Powinien automatycznie wygenerować następujący kod testowy.
@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());
}
}
Wspaniały! Właśnie stworzyłeś swój pierwszy test instrumentalny! To było super łatwe. Prawdopodobnie powinieneś dodać asercję, aby uczynić to prawdziwym testem, ale jest to również łatwe do zrobienia z rejestratorem. Obejrzyj ten film, aby przejść nieco głębiej.
Dalsze badanie
Najpierw obejrzałam filmy, a potem przeczytałam dokumentację. To wszystko jest bardzo pomocne. Ostatni odsyłacz prowadzi do serii artykułów, w których omówiono kilka ważnych kwestii, o których należy pomyśleć przy wyborze elementów do przetestowania.