Ta odpowiedź jest przeznaczona dla osób, które dopiero rozpoczynają testowanie Androida. Przedstawię dwa proste przykłady, które pomogą Ci zobaczyć, jak działają testy. Jeśli będziesz obserwować przez następne 10 minut, wszystko zostanie skonfigurowane, aby rozpocząć dodawanie testów do własnej aplikacji. Myślę, że będziesz zaskoczony, jak łatwo jest. Z pewnością byłam.
Wstęp do badań Android
Istnieją dwa różne rodzaje testów, które zrobisz.
- Test jednostek lokalnych. Są one uruchamiane lokalnie na maszynie JVM (wirtualna maszyna Java). Ponieważ są one lokalne, są szybkie. Możesz ich użyć do przetestowania części kodu, które wymagają tylko Java, a nie interfejsów API Androida. (Czasami można zrobić fałszywy API obiektu do przetestowania więcej rzeczy na miejscu. To się nazywa mocking a. Mock
Context
jest przykładem).
- oprzyrządowanego testy. Te testy są przeprowadzane na prawdziwym urządzeniu lub 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 foldery domyślne.
Wszystko już jest i czeka na tworzenie testów. Wszystko już skonfigurowane!
Jak utworzyć jednostkę lokalną testuje
Otwórz plik ExampleUnitTest
pokazany na powyższym zdjęciu. Powinien 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 jedną. (W tym przypadku jest tylko jedno badanie, więc oba robią to samo.)
Należy zdać (o ile 2 + 2
wciąż 4
gdy czytasz tę odpowiedź). Gratulacje, właśnie przeprowadziłeś swój pierwszy test!
tworzyć własne testy
Napiszmy nasz własny test. Najpierw dodać tę klasę do głównego projektu aplikacji tak, że mamy coś do testu:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
teraz zmienić metodę w klasie testowej addition_isCorrect()
być jak poniższego kodu (lub po prostu dodać inną metodę pod inną nazwą) :
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 ponownie, a powinieneś zobaczyć, jak mija. Gratulacje, właśnie stworzyłeś swój pierwszy test! (Cóż, myślę, że to technicznie kopalni, ale, hej, wystarczająco blisko. Co moje jest twoje.)
Jak stworzyć testy oprzyrządowanego
otworzyć plik ExampleInstrumentedTest
. ponownie
@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 jeden z tych przycisków zielony: powinien wyglądać mniej więcej tak.
Dopóki masz prawdziwe urządzenie podłączone lub emulatora skonfigurować, należy zaczęli go i uruchomić aplikację. Gratulacje, właśnie wykonałeś swój pierwszy test instrumentalny!
tworzyć własne testy
oprzyrządowanego testy używać Espresso do uruchamiania testów. Jest to trochę jak twój mały robot, który może przetestować twoją aplikację. Możesz powiedzieć, aby zrobił coś takiego jak naciśnięcie przycisku lub odczytanie właściwości TextView.
Możesz napisać instrukcję, jak wykonać test ręcznie, ale ponieważ dopiero zaczynamy, użyjmy auto-record function. To bardzo proste.
Najpierw dodaj przycisk do interfejsu użytkownika, abyśmy mogli z nim pracować.Zrobiłem to:
<?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 naciśnij Uruchom> Testuj Record Espresso w menu.
Po jego uruchomieniu, kliknij przycisk w emulatorze, a następnie wybrać przycisk OK, aby zakończyć w oknie dialogowym Record. 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());
}
}
Świetnie! Właśnie stworzyłeś pierwszy instrument testowy! To było bardzo łatwe. Prawdopodobnie powinieneś dodać stwierdzenie, aby uczynić go prawdziwym testem, ale to także całkiem łatwo zrobić z rejestratorem. Oglądaj this video, aby przejść nieco głębiej.
dalszych badań
będę oglądać filmy, a następnie zapoznać się z dokumentacją. To wszystko jest bardzo pomocne. Ostatni link to seria artykułów, które obejmują ważne rzeczy do przemyślenia przy wyborze tego, co należy przetestować.
Próbowałem również utworzyć projekt testowy. Jeśli zrobisz to za pomocą narzędzia wiersza poleceń systemu Android, podobnie jak w przypadku projektu Eclipse, pojawi się błąd, ponieważ nie może znaleźć pliku AndroidManifest.xml. Wygląda na to, że Google musi zaktualizować swoje narzędzie Android do obsługi projektów Grundle. Jednak jestem nowy w testowaniu w systemie Android, więc nie mogę ci pomóc = ( – Kage