AndroidX Test ist eine Sammlung von Jetpack-Bibliotheken, mit denen Sie Tests für Android-Apps ausführen können. Außerdem bietet sie 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. Außerdem enthält sie UI-Test-Frameworks wie Espresso, UI Automator und den Robolectric-Simulator.
AndroidX Test-Bibliotheken 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.gradlefür Ihr Gradle-Modul. - Schritt 2: Prüfen Sie, ob im Abschnitt „Repositories“ das Maven -Repository von Google angezeigt wird:
allprojects {
repositories {
jcenter()
google()
}
}
- Schritt 3: Fügen Sie für jedes AndroidX Test-Paket, das Sie verwenden möchten, den Paket
namen im Abschnitt „Dependencies“ hinzu. Wenn Sie beispielsweise das Paket
espresso-corehinzufü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') }
Das sind die häufigsten AndroidX Test-Abhä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") }
Auf der Seite mit den Versionshinweisen finden Sie eine Tabelle mit den neuesten Versionen pro Artefakt.
Spezifische Referenz dokumentation zu diesen Bibliotheken finden Sie im Paketindex oder Klassenindex.
Projekte mit veralteten Klassen
Wenn Ihre App Tests verwendet , die auf veralteten JUnit3-basierten android.test
Klassen wie InstrumentationTestCase und TestSuiteLoader basieren, fügen Sie im Abschnitt android der Datei die folgenden Zeilen 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 veralteten JUnit3-basierten android.test Klassen basieren, fügen Sie
die erforderlichen <uses-library> Elemente dem Manifest Ihrer Test-App hinzu. Wenn Sie beispielsweise Tests hinzufügen, die von der Bibliothek android.test.runner abhängen, fügen Sie dem Manifest Ihrer App das folgende Element 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 veralteter Klassen und der Ausrichtung auf Android 9 oder
höher
Die Anleitung in diesem Abschnitt gilt nur, wenn Sie Android 9 (API-Level 28) oder höher verwenden und die Mindest-SDK-Version für Ihre App auf Android 9 festgelegt ist.
Die Bibliothek android.test.runner 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 einbeziehen:
<!-- 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" />