Configurer un projet pour AndroidX Test

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" />