AndroidX Test ist eine Sammlung von Jetpack-Bibliotheken, mit denen Sie Tests für Android-Apps ausführen können. Außerdem bietet es eine Reihe von Tools, die Ihnen beim Schreiben dieser Tests helfen.
AndroidX Test bietet beispielsweise JUnit4-Regeln zum Starten von Aktivitäten und zur Interaktion mit ihnen in JUnit4-Tests. Es enthält auch Frameworks für UI-Tests wie Espresso, UI Automator und den Robolectric-Simulator.
AndroidX-Testbibliotheken hinzufügen
Wenn Sie AndroidX Test verwenden möchten, müssen Sie die Abhängigkeiten Ihres App-Projekts in Ihrer Entwicklungsumgebung ändern.
Gradle-Abhängigkeiten hinzufügen
So ändern Sie die Abhängigkeiten Ihres App-Projekts:
- Schritt 1: Öffnen Sie die Datei
build.gradle
für Ihr Gradle-Modul. - Schritt 2: Prüfen Sie, ob das Maven-Repository von Google im Abschnitt „repositories“ (Repositories) aufgeführt ist:
allprojects {
repositories {
jcenter()
google()
}
}
- Schritt 3: Fügen Sie für jedes AndroidX-Testpaket, das Sie verwenden möchten, den Paketnamen dem Abschnitt „dependencies“ hinzu. Wenn Sie beispielsweise das Paket
espresso-core
hinzufügen möchten, fügen Sie die folgenden Zeilen hinzu:
Groovy
dependencies { ... androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion') }
Dies sind die häufigsten AndroidX-Testabhängigkeiten:
Groovy
dependencies { // Core library androidTestImplementation "androidx.test:core:$androidXTestVersion0" // AndroidJUnitRunner and JUnit Rules androidTestImplementation "androidx.test:runner:$testRunnerVersion" androidTestImplementation "androidx.test:rules:$testRulesVersion" // Assertions androidTestImplementation "androidx.test.ext:junit:$testJunitVersion" androidTestImplementation "androidx.test.ext:truth:$truthVersion" // Espresso dependencies androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion" androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion" // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK’"s compile classpath or the test APK // classpath. androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion" }
Kotlin
dependencies { // Core library androidTestImplementation("androidx.test:core:$androidXTestVersion") // AndroidJUnitRunner and JUnit Rules androidTestImplementation("androidx.test:runner:$testRunnerVersion") androidTestImplementation("androidx.test:rules:$testRulesVersion") // Assertions androidTestImplementation("androidx.test.ext:junit:$testJunitVersion") androidTestImplementation("androidx.test.ext:truth:$truthVersion") // Espresso dependencies androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion") androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion") // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK"s compile classpath or the test APK // classpath. androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion") }
Die Seite Versionshinweise enthält eine Tabelle mit den neuesten Versionen pro Artefakt.
Spezifische Referenzdokumentationen zu diesen Bibliotheken finden Sie im Paketindex oder Klassenindex.
Projekte mit veralteten Klassen
Wenn Ihre App Tests verwendet , die auf den eingestellten JUnit3-basierten android.test
-Klassen wie InstrumentationTestCase
und TestSuiteLoader
basieren, fügen Sie die folgenden Zeilen im Abschnitt android
der Datei hinzu:
android {
...
useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}
Manifestdeklarationen hinzufügen
Wenn Sie Tests ausführen möchten, die auf den eingestellten JUnit3-basierten android.test
-Klassen basieren, fügen Sie dem Manifest Ihrer Test-App die erforderlichen <uses-library>
-Elemente hinzu. Wenn Sie beispielsweise Tests hinzufügen, die von der android.test.runner
-Bibliothek abhängen, fügen Sie das folgende Element zum Manifest Ihrer App hinzu:
<!-- You don't need to include android:required="false" if your app's
minSdkVersion is 28 or higher. -->
<uses-library android:name="android.test.runner"
android:required="false" />
Informationen dazu, welche Bibliothek eine bestimmte JUnit-basierte Klasse enthält, finden Sie unter JUnit-basierte Bibliotheken.
Überlegungen bei der Verwendung eingestellter Klassen und beim Targeting auf Android 9 oder
höher
Die Informationen in diesem Abschnitt gelten nur, wenn Sie auf Android 9 (API‑Level 28) oder höher ausgerichtet sind und die SDK‑Mindestversion für Ihre App auf Android 9 festgelegt ist.
Die android.test.runner
-Bibliothek hängt implizit von den Bibliotheken android.test.base
und android.test.mock
ab. Wenn Ihre App nur Klassen aus android.test.base
oder android.test.mock
verwendet, können Sie die Bibliotheken einzeln einbinden:
<!-- For both of these declarations, you don't need to include
android:required="false" if your app's minSdkVersion is 28
or higher. -->
<uses-library android:name="android.test.base"
android:required="false" />
<uses-library android:name="android.test.mock"
android:required="false" />