Au fur et à mesure que votre application se développe, il peut être utile de placer certains de ses composants au cours d'un processus autre que le processus principal de votre application. Pour tester les composants d'une application processus autres que ceux par défaut, vous pouvez utiliser la fonctionnalité d'Espresso multiprocessus. Disponible sur Android 8.0 (niveau d'API 26) ou version ultérieure, cet outil vous permet de : tester facilement les interactions de l'interface utilisateur de votre application qui s'étendent sur tous les processus de votre application tout en conservant les garanties de synchronisation d'Espresso.
Lorsque vous utilisez Multiprocess Espresso, conservez la gestion des versions et le champ d'application suivants ces considérations à l'esprit:
- Votre application doit cibler Android 8.0 (niveau d'API 26) ou version ultérieure.
- L'outil ne peut tester que les composants d'application que vous incluez dans les processus de le package de votre application. Il ne peut pas tester les processus externes.
Utiliser l'outil
Pour tester un processus dans votre application à l'aide d'Espresso multiprocessus, ajoutez une référence.
à l'artefact espresso-remote dans le fichier build.gradle
de votre application:
app/build.gradle
Groovy
dependencies { ... androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1' }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1') }
Vous devez également ajouter les éléments suivants au fichier manifeste androidTest
de votre application:
- Un élément
<instrumentation>
qui définit le processus. - Un élément
<meta-data>
indiquant que vous souhaitez utiliser Multiprocess Espresso
L'extrait de code suivant montre comment ajouter ces éléments:
src/androidTest/AndroidManifest.xml
<manifest ... package="androidx.test.mytestapp.tests"> <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" /> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="androidx.test.mytestapp" android:targetProcesses="*"> <meta-data android:name="remoteMethod" android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" /> </instrumentation> </manifest>
L'extrait précédent indique au framework Android que vous souhaitez qu'il teste
chaque processus du package de votre application. Si vous souhaitez tester uniquement un sous-ensemble
processus de l'application, vous pouvez spécifier une liste d'éléments séparés par une virgule dans les
targetProcesses
:
<instrumentation
...
android:targetProcesses=
"androidx.test.mytestapp:myFirstAppProcessToTest,
androidx.test.mytestapp:mySecondAppProcessToTest" ... />
Comprendre l'architecture de l'outil
Lorsque vous testez votre application et lancez son processus par défaut, vous pouvez exécuter une interface utilisateur interaction (appui sur un bouton, par exemple) qui lance une activité dans un processus. Le système effectue ensuite les étapes suivantes pour activer l'authentification multiprocessus à l'aide d'Espresso:
- Le framework Android crée et lance un nouveau processus pour suivre le
structure de navigation. Chaque processus
Instrumentation
inclut une nouvelle instanceAndroidJUnitRunner
À ce stade, les deux processus d'instrumentation ne peuvent pas communiquer entre eux autre. - Chaque
AndroidJUnitRunner
enregistre Espresso comme framework de test. - Les 2 instances de
AndroidJUnitRunner
effectuer un handshake pour établir une connexion entre eux. Similaire temps, chaqueAndroidJUnitRunner
connecte tous les clients enregistrés comme Espresso à l'aide de leur leurs homologues dans d'autres processus, de sorte que ces clients puissent de communication entre eux. - Chaque
AndroidJUnitRunner
l'instance continue de rechercher les nouvelles instances d'instrumentation et les tests en établissant des canaux de communication supplémentaires si nécessaire.
La figure 1 illustre le résultat de ce processus:
![](https://developer.android.google.cn/static/images/training/testing/multiprocess_espresso.png?authuser=19&hl=fr)
Ressources supplémentaires
Pour plus d'informations à ce sujet, consultez les ressources suivantes.
- Développement basé sur les tests sur Android avec l'assistance Android Testing Bibliothèque vidéo de la session Google I/O 2017, à partir de 36:41.