Diese Antwort richtet sich an Personen, die gerade erst mit Android-Tests beginnen. Ich werde zwei einfache Beispiele geben, um Ihnen zu zeigen, wie das Testen funktioniert. Wenn Sie die nächsten 10 Minuten mitmachen, können Sie Ihre Tests zu Ihrer eigenen App hinzufügen. Ich denke, Sie werden überrascht sein, wie einfach es ist. Ich war es auf jeden Fall.
Einführung in Android-Tests
Es gibt zwei verschiedene Arten von Tests, die Sie durchführen werden.
- Lokale Unit-Tests. Diese werden lokal auf der JVM (Java Virtual Machine) ausgeführt. Da sie lokal sind, sind sie schnell. Sie können sie verwenden, um die Teile Ihres Codes zu testen, die nur Java und nicht die Android-APIs benötigen. (Manchmal können Sie ein gefälschtes API-Objekt erstellen, um mehr Dinge lokal zu testen. Dies wird als Verspottung bezeichnet . Eine Verspottung
Context
ist ein Beispiel.)
- Instrumentierte Tests. Diese Tests werden auf einem realen Gerät oder im Emulator ausgeführt. Das macht sie langsamer als die lokalen Tests. Sie sind jedoch flexibler, da Ihnen die vollständige Android-API zur Verfügung steht.
Wenn Sie ein neues Projekt erstellen, werden die folgenden Standardordner angezeigt.
Alles ist bereits da und wartet darauf, dass Sie Ihre Tests erstellen. Es ist alles schon eingerichtet!
So erstellen Sie lokale Komponententests
Öffnen Sie die ExampleUnitTest
im obigen Bild gezeigte Datei. es sollte ungefähr so aussehen:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Drücken Sie den doppelten grünen Pfeil, um alle Tests auszuführen, oder den einzelnen grünen Pfeil, um nur einen auszuführen. (In diesem Fall gibt es nur einen Test, sodass beide dasselbe tun.)
Es sollte vergehen (solange 2 + 2
es noch ist, 4
wenn Sie diese Antwort lesen). Herzlichen Glückwunsch, Sie haben gerade Ihren ersten Test durchgeführt!
Machen Sie Ihren eigenen Test
Schreiben wir unseren eigenen Test. Fügen Sie diese Klasse zuerst Ihrem Haupt-App-Projekt hinzu, damit wir etwas testen können:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Ändern Sie nun die addition_isCorrect()
Methode in der Testklasse so, dass sie dem folgenden Code entspricht (oder fügen Sie einfach eine andere Methode mit einem anderen Namen hinzu):
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);
}
}
Führen Sie es erneut aus und Sie sollten sehen, dass es vorbei ist. Herzlichen Glückwunsch, Sie haben gerade Ihren eigenen ersten Test erstellt! (Nun, ich denke, technisch gesehen war es meins, aber hey, nah genug. Was mir gehört, gehört dir.)
So erstellen Sie instrumentierte Tests
Öffnen Sie die ExampleInstrumentedTest
Datei. es sollte ungefähr so aussehen:
@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());
}
}
Drücken Sie erneut eine dieser grünen Tasten.
Solange Sie ein echtes Gerät angeschlossen oder den Emulator eingerichtet haben, sollte es gestartet und Ihre App ausgeführt werden. Herzlichen Glückwunsch, Sie haben gerade Ihren ersten instrumentierten Test durchgeführt!
Machen Sie Ihren eigenen Test
Die instrumentierten Tests verwenden Espresso , um die Tests durchzuführen. Es ist wie bei Ihrem eigenen kleinen Roboterbenutzer, dass Sie Ihre App testen lassen können. Sie können festlegen, dass beispielsweise eine Taste gedrückt oder die Eigenschaften einer Textansicht gelesen werden sollen.
Sie können die Anweisungen für die Durchführung des Tests von Hand schreiben. Da wir jedoch gerade erst anfangen, verwenden wir die Funktion zur automatischen Aufzeichnung . Es ist super einfach.
Fügen Sie Ihrer Benutzeroberfläche zunächst eine Schaltfläche hinzu, damit wir mit etwas arbeiten können. Ich war das:
<?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>
Drücken Sie dann im Menü auf Ausführen> Espressotest aufzeichnen.
Klicken Sie nach dem Start auf die Schaltfläche im Emulator und wählen Sie zum Abschluss OK im Dialogfeld Aufzeichnen. Der folgende Testcode sollte automatisch generiert werden.
@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());
}
}
Toll! Sie haben gerade Ihren ersten instrumentierten Test erstellt! Das war super einfach. Sie sollten wahrscheinlich eine Behauptung hinzufügen, um es zu einem echten Test zu machen, aber das ist auch mit dem Rekorder ziemlich einfach. Sehen Sie sich dieses Video an an, um etwas tiefer zu gehen.
Weitere Studie
Ich würde mir zuerst die Videos ansehen und dann die Dokumentation durchlesen. Es ist alles ziemlich hilfreich. Der letzte Link führt zu einer Reihe von Artikeln, die einige wichtige Dinge behandeln, über die Sie nachdenken sollten, wenn Sie auswählen, was getestet werden soll.