AndroidX Test est une collection de bibliothèques Jetpack qui vous permet d'exécuter des tests dans les 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 eux dans les tests JUnit4. Il contient également des frameworks de test d'UI (UI Testing) tels que comme Espresso, UI Automator et le simulateur Robolectric.
Ajouter des bibliothèques de test AndroidX
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 "Dépôts", assurez-vous que le fichier Maven de Google s'affiche:
allprojects {
repositories {
jcenter()
google()
}
}
- Étape 3: Ajoutez chaque package de test AndroidX à utiliser.
au
les dépendances. Par exemple, pour ajouter le package
espresso-core
, ajoutez la classe 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 de test AndroidX 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 présentant les dernières versions par de l'artefact.
Reportez-vous à l'index des packages ou à l'index de classes pour plus d'informations. sur ces bibliothèques.
Projets utilisant des classes obsolètes
Si votre application utilise des tests qui s'appuient sur des android.test
obsolètes basés sur JUnit3
, comme InstrumentationTestCase
et TestSuiteLoader
, ajoutent
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. Pour
Par exemple, si vous ajoutez des tests qui dépendent de la bibliothèque android.test.runner
, ajoutez
l'élément suivant dans le 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 donnée, consultez Bibliothèques basées sur JUnit.
Éléments à prendre en compte lorsque 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 la version minimale du SDK pour votre application est définie sur Android 9.
La bibliothèque android.test.runner
dépend implicitement de android.test.base
et android.test.mock
. Si votre application n'utilise que des classes
android.test.base
ou android.test.mock
, vous pouvez inclure les bibliothèques
eux-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" />