AndroidX Test est un ensemble de bibliothèques Jetpack qui vous permettent d'exécuter des tests sur des applications Android. Il fournit également une série d'outils pour vous aider à écrire ces tests.
Par exemple, AndroidX Test fournit des règles JUnit4 pour démarrer des activités et interagir avec elles dans les tests JUnit4. Il contient également des frameworks de test d'interface utilisateur tels qu'Espresso, UI Automator et le simulateur Robolectric.
Ajouter des bibliothèques AndroidX Test
Pour utiliser AndroidX Test, vous devez modifier les dépendances de votre projet d'application dans votre environnement de développement.
Ajouter des dépendances Gradle
Pour modifier les dépendances de votre projet d'application, procédez comme suit:
- Étape 1: Ouvrez le fichier
build.gradle
de votre module Gradle. - Étape 2: Dans la section des dépôts, assurez-vous que le dépôt Maven de Google s'affiche:
allprojects {
repositories {
jcenter()
google()
}
}
- Étape 3: Pour chaque package de test AndroidX que vous souhaitez utiliser, ajoutez son nom à la section des dépendances. Par exemple, pour ajouter le package
espresso-core
, ajoutez les lignes suivantes:
Groovy
dependencies { ... androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion') }
Voici les dépendances AndroidX Test les plus courantes:
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") }
La page Notes de version contient un tableau présentant les dernières versions par artefact.
Consultez l'index de packages ou l'index de classes pour obtenir une documentation de référence spécifique sur ces bibliothèques.
Projets utilisant des classes obsolètes
Si votre application utilise des tests qui reposent sur des classes android.test
obsolètes basées sur JUnit3 , telles que InstrumentationTestCase
et TestSuiteLoader
, ajoutez les lignes suivantes dans la section android
du fichier:
android {
...
useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}
Ajouter des déclarations de fichier manifeste
Pour exécuter des tests qui reposent sur des classes android.test
obsolètes basées sur JUnit3, ajoutez les éléments <uses-library>
nécessaires au fichier manifeste de votre application de test. Par exemple, si vous ajoutez des tests qui dépendent de la bibliothèque android.test.runner
, ajoutez l'élément suivant au fichier manifeste de votre application:
<!-- 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" />
Pour déterminer la bibliothèque qui contient une classe basée sur JUnit donnée, consultez la section Bibliothèques basées sur JUnit.
Points à prendre en compte si vous utilisez des classes obsolètes et que vous ciblez Android 9 ou
de plus
Les conseils de cette section ne s'appliquent que si vous ciblez Android 9 (niveau d'API 28) ou une version ultérieure et si la version minimale du SDK pour votre application est définie sur Android 9.
La bibliothèque android.test.runner
dépend implicitement des bibliothèques android.test.base
et android.test.mock
. Si votre application n'utilise que des classes de android.test.base
ou android.test.mock
, vous pouvez inclure les bibliothèques par elles-mêmes:
<!-- 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" />