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: