Robotium Tutorial: Android Testframework mit Beispiel

⚡ Intelligente Zusammenfassung

Robotium ist ein Open-Source Android Ein Testautomatisierungsframework, das native und hybride Apps über ihre Benutzeroberfläche steuert und es einem Tester ermöglicht, Funktions-, System- und Akzeptanzszenarien zu skripten, die sich über mehrere Bereiche erstrecken. Android Aktivitäten.

  • 🔘 Kernfach: Solo stellt die Klick-, Such-, Zieh- und Assertionsmethoden bereit, die jeder Robotium Testfallaufrufe.
  • ☑️ Blackbox-freundlich: Tests binden zur Laufzeit an UI-Komponenten, daher sind nur minimale Kenntnisse des Anwendungsquellcodes erforderlich.
  • ✅ Vierstufiges Verfahren: Entwerfen Sie die Testspezifikation, schreiben Sie das Testprogramm, führen Sie es auf einem Gerät aus und sammeln Sie anschließend das Ergebnis.
  • 🧪 Ausgearbeitetes Beispiel: Ein komplettes HalloAndroidDie Testklasse prüft den sichtbaren Text, die aktuelle Aktivität und die Schaltfläche „Start“.
  • ️ Zwei Betriebsmodi: Starten Sie Tests aus der IDE oder aus einem Terminal mit dem Befehl adb shell am instrument.
  • ⚙️ Aktueller Status: Robotium 5.6.3 bleibt die letzte Version, daher neu Android Projekte kombinieren oder ersetzen es üblicherweise mit Espresso.

Robotium Benutzerhandbuch

Was ist Robotium?

Robotium ist ein Android Testframework, das Testfälle für native und hybride Anwendungen automatisiert. RobotiumEin Entwickler kann robuste automatisierte GUI-Testfälle erstellen für Android Ein Entwickler kann außerdem funktionale, System- und Akzeptanztestszenarien schreiben, die sich über mehrere Anwendungen erstrecken. Android Aktivitäten.

Robotium Test-Framework

Die Standard Android Das Testframework weist die unten aufgeführten Einschränkungen auf.

  • Mehrere Aktivitäten können nicht bearbeitet werden
  • Die Leistung der Testausführung ist langsam
  • Die Testfälle sind komplex und schwer umzusetzen.

Das Robotium Das Framework ist die bessere Wahl für die Durchführung von Tests auf einem Android Anwendung.

Robotium ist ein Open-Source-Framework und wird als Erweiterung von betrachtet Android Testframework. Verwendung RobotiumEin Entwickler kann robuste automatisierte GUI-Testfälle erstellen für Android Darüber hinaus kann ein Entwickler funktionale, System- und Akzeptanztestszenarien schreiben, die sich über mehrere Anwendungen erstrecken. Android Aktivitäten.

Die folgende Tabelle fasst die erweiterten Funktionen zusammen, die sie voneinander unterscheiden. Robotium aus dem einfachen Instrumentierungsrahmen.

Erweiterte Funktionen von Robotium im Vergleich zum Standard Android Instrumentierungsrahmen

Erweiterte Funktionen von Robotium

Robotium Testfallklassen

Robotium Es wird eine kleine Anzahl von Klassen zum Testen mitgeliefert, und das Beispiel im Artikel importiert die ältere Version. com.jayway.android.robotium.solo Paket. Diese Klassen unterstützen Testfälle, die sich über mehrere Aktivitäten erstrecken, und Solo ist integriert mit ActivityInstrumentationTestCase2.

Hinweis: Strom Robotium Releases legen dieselbe Klasse unter der kürzeren Version offen. com.robotium.solo Paket, während die Maven-Koordinate erhalten blieb com.jayway.android.robotium:robotium-soloPassen Sie den Import an die JAR-Version an, die Sie dem Projekt tatsächlich hinzufügen.

Das folgende Diagramm zeigt, wie die Solo-Klasse über dem Instrumentierungstestfall angeordnet ist.

Solo-Klasse integriert mit ActivityInstrumentationTestCase2 in einem Robotium Testfall

Integration von Robotium und ActivityInstrumentationTestCase2

Ein Tester kann Testfälle schreiben, ohne Kenntnisse über das Anwendungsdesign zu besitzen, was diesen Ansatz zu einer Form von Black-Box-TestDas ist ein herausragender Vorteil gegenüber dem einfachen Android Testfallklassen.

Anleitung von Robotium

So verwenden Sie Robotium in Ihrem Android Für dieses Testprojekt müssen Sie die folgenden Schritte befolgen.

Schritte zum Hinzufügen und Verwenden Robotium in einem Android Testprojekt

Anwendung Robotium

Um die Qualität Ihrer Android Für die Bewerbung befolgen Sie bitte das unten beschriebene vierstufige Verfahren.

  • Entwurf der Testspezifikation
  • Entwickeln Sie das Testprogramm
  • Führen Sie den Testfall auf dem Zielgerät aus.
  • Sammeln Sie das Testergebnis

Das folgende Flussdiagramm ordnet diese vier Phasen in der richtigen Reihenfolge an.

Ablaufdiagramm der vierstufigen Android Anwendungstestverfahren

Android Anwendungstestverfahren

SCHRITT 1) Entwurf der Testspezifikation

Dies ist der erste Schritt beim Testen Ihrer Anwendung. In diesem Schritt definieren Sie das zu testende Ziel. Android Eine Anwendung hat viele zu testende Ziele, wie z. B. die Benutzeroberfläche, Aktivitäten, Komponenten und Dienste. Eine klare Definition der Ziele trägt zu einer umfassenden Testabdeckung bei.

  • Planen Sie die durchzuführenden Testarten (Komponententest, Funktionstest, Systemtest).
  • Gestalte jedes Testfall für maximale Abdeckung während der Fahrtping Die Anzahl der Testfälle sollte gering sein. Je mehr Code getestet wird, desto höher ist die Wahrscheinlichkeit, Fehler frühzeitig zu erkennen.

SCHRITT 2) Testprogramm schreiben

Dieser Abschnitt führt Sie durch das Schreiben eines Android Testprogramm mit Android JUnit Tests und RobotiumAngenommen, Sie haben bereits einen entwickelt Android Programm namens HalloAndroidDieses Programm verfügt über die unten beschriebenen Funktionen.

  • Zeigen Sie den Text „Hallo Welt!“ auf dem Bildschirm an.
  • Zeige ein Hallo anAndroid Meldung, wenn der Benutzer die Taste „Start“ drückt.

Der untenstehende Screenshot zeigt die zu testende Anwendung auf einem Gerät.

HalloAndroid Die zu testende Anwendung zeigt den Text „Hallo Welt“ und die Schaltfläche „Start“ an.

HalloAndroid Anwendung

Systemanforderungen

  • Das Android Die Plattform wird mit einer vorintegrierten JUnit 3-Rahmenwerk, welches ist das ActivityInstrumentationTestCase2 aufbaut.
  • So erstellen Sie eine Android Testprojekt von EclipseIhre Maschine benötigt einen funktionierenden Android SDK-Installation.
  • Installieren Sie die aktuelle Android Plattform-SDK anstelle einer festgelegten älteren Version.

Die Screenshots in dieser Komplettlösung verwenden Eclipse mit dem ADT-Plugin, das zum Zeitpunkt der Erstellung des Beispiels die Standard-Toolchain war. Eclipse ADT wird nicht mehr unterstützt, daher würden Sie auf einem modernen Rechner herunterladen Android Studio stattdessen denselben Testcode innerhalb eines wiederverwenden Gradle Modul.

Bei der Robotium Testframework herunterladen Robotium Bibliothek aus der Robotium Projekt-Seite.

Erstellen Sie ein Android Testprojekt

  • Klicken Sie auf Datei -> Neu -> Andere
  • Wählen Android -> Android Führen Sie das Testprojekt wie in der Abbildung unten gezeigt durch und wählen Sie dann „Weiter“.

Eclipse Neuer Projektassistent mit Android Testprojekt ausgewählt

Erstelle eine neue Android Testprojekt

Geben Sie Ihrem Testprojekt einen Namen. Gemäß der Namenskonvention sollte das Testprojekt „Hallo“ heißen.AndroidPrüfen".

Eclipse Dialog mit dem Testprojekt namens HelloAndroidTest gemäß der Namenskonvention

Fügen Sie den Testprojektnamen gemäß der Namenskonvention hinzu.

Wählen Sie die zu testende Zielanwendung aus. In diesem Fall ist es Hello.Androidund klicken Sie dann auf „Fertig stellen“.

Eclipse Assistentenschritt: Auswahl von „Hallo“Android als die Zielanwendung, die getestet wird

Wählen Sie die zu testende Zielanwendung aus.

Erstellen Sie Testsuiten

Basierend auf Ihrer Testspezifikation erstellen Sie nun Test-Suites für Ihr Testprogramm. Sie können aus verschiedenen Optionen wählen. Softwaretest Frameworks. Dieses Tutorial verwendet die Standard-Frameworks. Android Testrahmen ActivityInstrumentationTestCase2Zum Testen mit Robotium, Ergänzen Sie die Robotium Bibliotheksdatei zu einer libs Verzeichnis innerhalb Ihres Projektordners.

Ein Testfall definiert die Testumgebung, die zum Ausführen mehrerer Tests verwendet wird. Um einen Testfall zu definieren, folgen Sie der unten stehenden Programmstruktur.

  • Implementieren Sie eine Unterklasse von TestCase.
  • Definiere Instanzvariablen, die den Zustand der Fixture speichern.
  • Initialisieren Sie den Fixture-Zustand durch Überschreiben von setUp().
  • Nach einem Test kann durch Überschreiben der Methode tearDown() aufgeräumt werden.

Das untenstehende Diagramm überträgt diese Struktur auf das Testprogramm, das Sie gleich schreiben werden.

Struktur eines Robotium Testprogramm mit Aufbau, Testmethoden und Abbau

Testprogrammstruktur

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Testfälle hinzufügen

  • Erstellen Sie die TestCase-Klassen im selben Paket wie die Testsuite.
  • Um eine bestimmte Aktivität zu testen, zum Beispiel HalloAndroidErstellen Sie einen Testfall, der ActivityInstrumentationTestCase2 erweitert.Android>.
  • Innerhalb dieser Klasse ruft der Tester die zu testende Aktivität über die Methode getActivity() ab.
  • Erstellen Sie beliebig einen Test für die Aktivität, indem Sie eine Methode mit dem Namen „Test + ursprünglicher Methodenname“ hinzufügen.
  • Innerhalb der Testmethode kann der Tester verwenden Android JUnit Funktionen zum Vergleich des Ist-Werts mit dem Soll-Wert. Diese Methoden werden im Folgenden dargestellt.

Die folgende Tabelle listet die in den beiden Frameworks am häufigsten verwendeten Assertions- und Interaktionsmethoden auf.

Beispielmethoden der Robotium Solo-Klasse und die Android Testrahmen

Beispielmethoden von Robotium und der Android Testrahmen

Die obige Testsuite überprüft, ob die GUI der Anwendung den Text „Hello World!“ anzeigt und eine Schaltfläche mit der Bezeichnung „Start“ enthält.

SCHRITT 3) Test ausführen

Nachdem Sie Ihr Testprogramm fertiggestellt haben, führen Sie den Test anhand der folgenden Schritte aus.

  • Verbinde ein Android Verbinden Sie das Gerät mit Ihrem PC oder starten Sie einen Emulator, falls kein echtes Gerät verfügbar ist.
  • Klicken Sie in Ihrer IDE mit der rechten Maustaste auf das Testprojekt und wählen Sie Ausführen als → Android Komponententest.

Der untenstehende Screenshot zeigt, wie der Testlauf aus der IDE gestartet wird.

Starten der Robotium Testprogramm als ein Android Unit-Test aus der IDE

Ausführen des Testprogramms

Neben der Ausführung des Tests über die IDE kann er auch über die Kommandozeile ausgeführt werden. In diesem Testprogramm ist das Testpaket com.example.helloandroid.test. Führen Sie in einem Linux-Terminal den folgenden Befehl aus, um alle Tests in diesem Paket auszuführen.

$ adb shell am instrument -w -e package com.example.helloandroid.test

SCHRITT 4) Testergebnis abrufen

Nach der Testausführung werden die Testergebnisse erfasst.

In diesem Testprogramm werden vier Testmethoden ausgeführt. Im folgenden Testlauf wurden alle Testfälle erfolgreich abgeschlossen.

Ausgabe des Testergebnisses, das alle vier anzeigt Robotium Testfälle bestanden

Ausgabe des Testergebnisses, wenn alle Testfälle erfolgreich waren

Wenn ein Testfall fehlschlägt, wird die Ausgabe angezeigt und zeigt Ihnen, welche Testfälle fehlgeschlagen sind.

Ausgabe der Testergebnisse mit Auflistung der Robotium Testfälle, die fehlgeschlagen sind

Ausgabe des Testergebnisses bei einem fehlgeschlagenen Testfall

Quelle Code Beispiele

Dieser Artikel enthält Quellcodebeispiele, die Ihnen helfen, dem Tutorial besser zu folgen und die technischen Details schnell zu erfassen.

Wenn Sie vergleichen möchten Robotium mit den anderen Optionen in diesem Bereich, siehe Testen mobiler Anwendungen Leitfaden, der Appium Lernprogramm und die Zusammenfassung von Testtools für mobile Apps.

Häufig gestellte Fragen

Robotium Version 5.6.3 ist die letzte veröffentlichte Version, und die aktive Entwicklung wurde vor Jahren eingestellt. Das Framework läuft weiterhin, und das Artefakt ist noch auf Maven Central verfügbar, aber neue Android Projekte wählen normalerweise Espresso, Die Google pflegt.

Robotium ist ein Black-Box-Framework, das sich zur Laufzeit an Widgets bindet und nur geringe Kenntnisse des Quellcodes benötigt. Espresso is GoogleDas White-Box-Tool von [Name des Unternehmens] synchronisiert sich mit dem UI-Thread und benötigt Zugriff auf den Anwendungscode.

Robotium Es kann jeweils nur eine Anwendung ausführen, Flash- oder Webinhalte außerhalb einer WebView nicht zuverlässig verarbeiten, bietet keine integrierte Aufzeichnungsfunktion in der Open-Source-JAR-Datei und seine Abhängigkeit von veralteten Instrumentierungsklassen erschwert die moderne Nutzung. Gradle baut.

Erklären androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' in der Modul-Build-Datei oder lassen Sie die robotium-solo JAR in libs und referenzieren Sie es als Dateiabhängigkeit.

Ja. Robotium Bei den Tests handelt es sich um gewöhnliche Instrumentierungstests, bei denen dieselbe APK auf einem Emulator oder einem physischen Gerät ausgeführt wird. Für Gesten-, Sensor- und Leistungstests wird jedoch echte Hardware bevorzugt, da die Laufzeiten des Emulators abweichen können.

Robotium Es eignet sich für funktionale, System- und Benutzerakzeptanztests auf UI-Ebene. Es ist kein Ersatz für Unit-Tests, die auf der JVM schneller ausgeführt werden, noch für die umfassenderen Unit-Tests. Arten von Softwaretests Eine Veröffentlichung ist noch erforderlich.

Maschinelles Lernen wird für selbstheilende Locatoren eingesetzt, die Layoutänderungen überstehen, für visuelle Vergleiche, die Rendering-Regressionen aufdecken, und für die Erkennung fehlerhafter Tests, die Wiederholungsläufe priorisieren. Die Tools reduzieren den Wartungsaufwand, aber ein Mensch entscheidet weiterhin, welches Verhalten relevant ist.

GitHub-Copilot kann eine Solo-Setup-, TearDown- und Assertionsmethoden aus einer Aktivitätsklasse generieren. RevPrüfen Sie den Vorschlag sorgfältig, da er möglicherweise den Import veralteter Pakete oder Zusicherungen ausgibt, die die App nie erfüllt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: