Robolectric ist das branchenübliche Unit-Testing-Framework für Android. Mit Robolectric werden Ihre Tests in einer simulierten Android-Umgebung innerhalb einer JVM ausgeführt, ohne den Overhead und die Komplexität eines Emulators. Robolectric-Tests laufen routinemäßig zehnmal schneller als solche auf Kaltstart-Emulatoren.
Robolectric unterstützt die Ausführung von Unit-Tests für 15 verschiedene Android-Versionen, von Lollipop (API-Level 21) bis V (API-Level 35).
Hier ist ein Beispiel für einen einfachen Test, der mit Robolectric geschrieben wurde:
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
Weitere Informationen zur Installation und Verwendung von Robolectric in Ihrem Projekt, zur Erweiterung seiner Funktionalität und zum Beitritt zur Community der Mitwirkenden finden Sie unter robolectric.org.
Wenn Sie ein neues Projekt mit Robolectric-Tests starten möchten, können Sie sich an deckard
(entweder für Maven oder Gradle) wenden, um eine Anleitung zum Einrichten von Android und Robolectric auf Ihrem Computer zu erhalten.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric wird mit Gradle erstellt. Sowohl Android Studio als auch IntelliJ können die oberste Datei build.gradle.kts
importieren und daraus automatisch ihre Projektdateien generieren.
Um Robolectric auf Ihrem Computer zum Laufen zu bringen, lesen Sie diese Anleitung.
Um einen umfassenden Überblick über die Architektur von Robolectric zu erhalten, besuchen Sie robolectric.org.
Robolectric wird an mehreren Standorten aktiv weiterentwickelt. Der primäre Speicherort ist dieses GitHub-Repository, das als Quelle der Wahrheit für Robolectric-Code gilt. Hier finden Beiträge der breiteren Android-Entwickler-Community statt. Es gibt auch einen aktiven Entwicklungsbaum von Robolectric intern bei Google, in dem Beiträge von Erstanbieter-Android-Entwicklern stattfinden. Durch den internen Entwicklungsbaum von Robolectric bei Google können Erstanbieter-Android-Entwickler effizienter Beiträge zu Robolectric leisten. Dieser Baum wird bei jeder Änderung mithilfe des Code-Synchronisierungstools Copybara
direkt mit dem google
-Zweig synchronisiert. Es kommt regelmäßig zu bidirektionalen Zusammenführungen dieses Zweigs und des master
.
Robolectric wird über das externe/robolectric Repo-Projekt auch auf der Android-Plattform verwendet. Beiträge zu diesem Quellbaum beziehen sich typischerweise auf die neue SDK-Unterstützung und sich weiterentwickelnde Plattform-APIs. Änderungen aus diesem Zweig werden an den internen Robolectric-Baum bei Google weitergeleitet, der schließlich an die GitHub-Zweige weitergegeben wird.
Obwohl komplex, ermöglicht dieses verteilte Entwicklungsmodell Android-Entwicklern in verschiedenen Umgebungen, Robolectric zu nutzen und dazu beizutragen, während Änderungen schließlich ihren Weg in öffentliche Robolectric-Versionen finden.
Wenn Sie auf dem neuesten Stand bleiben möchten, können Sie versuchen, gegen einen Snapshot-Build anzutreten. Beachten Sie, dass Snapshots die neuesten Änderungen auf dem master
darstellen und möglicherweise Fehler enthalten.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}