AndroidX Test est un ensemble de bibliothèques Jetpack qui vous permet 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'UI tels qu'Espresso, UI Automator et le simulateur Robolectric.
Ajouter des bibliothèques de test AndroidX
Pour utiliser AndroidX Test, vous devez modifier les dépendances du projet de votre application dans votre environnement de développement.
Ajouter des dépendances Gradle
Pour modifier les dépendances du projet de votre application, procédez comme suit :
- Étape 1 : Ouvrez le fichier
build.gradle
de votre module Gradle. - Étape 2 : Dans la section "repositories" (dépôts), assurez-vous que le dépôt Maven de Google apparaît :
allprojects {
repositories {
jcenter()
google()
}
}
- Étape 3 : Pour chaque package AndroidX Test que vous souhaitez utiliser, ajoutez son nom de package à 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 disponibles :
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 avec les dernières versions par artefact.
Consultez l'index des packages ou l'index des 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 s'appuient sur des classes android.test
basées sur JUnit3 obsolètes , 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 s'appuient 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 contenant une classe basée sur JUnit, consultez Bibliothèques basées sur JUnit.
Éléments à prendre en compte lors de l'utilisation de classes obsolètes et du ciblage d'Android 9 ou version ultérieure
de plus
Les conseils de cette section ne s'appliquent que si vous ciblez Android 9 (niveau d'API 28) ou version ultérieure et que la version minimale du SDK de 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 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" />