Blog

Robotium: Blackbox-Tests für Android-Anwendungen

Arno den Hond

Aktualisiert Oktober 22, 2025
3 Minuten

Wie bereits in einem früheren Beitrag erwähnt, kann die Bedeutung des Testens nicht hoch genug eingeschätzt werden. In diesem Beitrag werden wir uns mit BDD für Android-Apps beschäftigen. Es gibt eine Reihe anderer Testtools für Android, wie Robolectric und Calculon. Robolectric verbessert die Geschwindigkeit der Testausführung, indem es den Test außerhalb des Emulators ausführt. Calculon ist eine DSL für das Testen von Ansichten und Aktivitäten. Da Robotium am ausgereiftesten und zuverlässigsten zu sein scheint, ist es meine Präferenz.

Robotium.org

Was ist Robotium und wie funktioniert es?

Robotium ist ein Test-Framework, das das Schreiben leistungsstarker und robuster automatischer Blackbox-Testfälle für Android-Anwendungen erleichtert. Mit der Unterstützung von Robotium können Entwickler von Testfällen Funktions-, System- und Akzeptanztestszenarien schreiben, die mehrere Android-Aktivitäten umfassen.

Im Wesentlichen ist ein Robotium-Test eine Unterklasse von junit.framework.TestCase (in diesem "Fall" ein ActivityInstrumentationTestCase2), in der mithilfe der Robotium-Bibliothek ein Solo-Objekt erstellt wird, das einen einfachen Zugriff auf die Ansichten in Ihren Aktivitäten ermöglicht. Über das Solo-Objekt können Sie Werte in Eingabefelder setzen, auf Schaltflächen klicken und Ergebnisse von anderen UI-Komponenten erhalten. Die Methoden von JUnits Assert-Klasse können dann verwendet werden, um diese Ergebnisse zu überprüfen. Wie richte ich Robotium ein? Nachdem Sie ein Android-Testprojekt auf die übliche Weise erstellt haben (ich gehe davon aus, dass Sie das bereits getan haben), müssen Sie das robotium JAR zu den Bibliotheken im Build-Pfad des Projekts hinzufügen. Wie verwendet man Robotium? In der setUp-Methode Ihrer Testklasse können Sie ein Solo-Objekt erstellen und die zu startende Aktivität angeben. Das Solo-Objekt kann dann in Ihren testXXX-Methoden verwendet werden, um Werte in/von UI-Komponenten zu erhalten und zu setzen und um Schaltflächen usw. anzuklicken. Viele von Solos Methoden für den Zugriff auf UI-Komponenten benötigen eine int, die den Index der Komponente in der Benutzeroberfläche darstellt. Dies kann zu sprödem Code führen, so dass die Verwendung von getView (und der in der Layout-Xml definierten ID) eine viel sicherere Alternative darstellt. Beachten Sie, dass das Ändern von Werten und das Ausführen von Klicks außerhalb des Threads, der die Ansichten ursprünglich erstellt hat, nicht erlaubt ist. Diese Dinge müssen weiterhin über Solos-Methoden wie setXXX, EnterText und clickOnXXX erfolgen. Die zu prüfenden Werte können dann über die Solos-Methoden isXXX, getCurrentXXX, searchText und andere abgerufen werden. Die Solos-Methode finalize sollte von der tearDown-Methode des Tests aufgerufen werden. Ein Beispiel: [sourcecode language="java"] Paket xebia.addapptesting; import xebia.addapp.AddApp; import xebia.addapp.R; import android.test.ActivityInstrumentationTestCase2; import android.widget.EditText; import com.jayway.android.robotium.solo.Solo; public class AddTest extends ActivityInstrumentationTestCase2<AddApp> { Privat Solo Solo; public AddTest() { super("xebia.addapp", AddApp.class); } @Override protected void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } public void testAdd() { int one = 1; int andere = 2; solo.enterText((EditText) solo.getView(R.id.one), Integer.toString(one)); solo.enterText((EditText) solo.getView(R.id.other), Integer.toString(other)); solo.clickOnView(solo.getView(R.id.calcbutton)); assertTrue(solo.searchText(Integer.toString(one + other))); } @Override public void tearDown() throws Exception { versuchen { solo.finalize(); } catch (Throwable e) { e.printStackTrace(); } getActivity().finish(); super.tearDown(); } } [/sourcecode] Wenn Sie den Testfall auf dem Emulator oder einem realen Gerät ausführen, sehen Sie, wie die Werte in die UI-Komponenten eingegeben werden oder wie sie angeklickt werden, als ob Sie es selbst tun würden. Nach Abschluss der Tests wird in der JUnit-Ansicht in Eclipse angezeigt, welche Tests fehlgeschlagen sind und welche bestanden wurden. Fazit Ich finde es ziemlich cool, zu sehen, wie die App ausgeführt wird und die Werte eingegeben werden. Diese Art von Blackbox-Verhaltenstest auf dem Emulator ist viel realistischer als ein einfacher Unit-Test. Bleiben Sie dran für meinen nächsten Beitrag zu einem Überraschungsthema, der bald erscheint!

Verfasst von

Arno den Hond

Contact

Let’s discuss how we can support your journey.