La bibliothèque de support de test d’Android comprend le Cadre d'interface utilisateur Automator, qui peut être utilisé pour effectuer des tests automatisés de boîte noire sur les applications Android. Introduit dans l'API de niveau 18, le cadre permet aux développeurs de simuler des actions de l'utilisateur sur les widgets constituant l'interface utilisateur d'une application..
Dans ce tutoriel, je vais vous montrer comment utiliser le framework pour créer et exécuter un test d'interface utilisateur de base pour l'application Calculator par défaut..
Pour suivre, il vous faut:
Pour utiliser le framework UI Automator dans votre projet, éditez le build.gradle déposer dans votre projet app répertoire, en ajoutant les dépendances suivantes:
androidTestCompile 'com.android.support.test: participant: 0.2' androidTestCompile 'com.android.support.test: règles: 0.2' androidTestCompile 'com.android.support.test.uiautomator: uiautomator-v18: 2.1.0'
le Synchroniser maintenant bouton devrait être sur l'écran maintenant. Lorsque vous cliquez dessus, vous devriez voir une erreur qui ressemble à ceci:
Clique le Installer le référentiel et synchroniser le projet lien pour installer le Dépôt de support Android.
Si vous utilisez le appcompat-v7 bibliothèque et sa version est 22.1.1, vous devez ajouter la dépendance suivante pour vous assurer que l'application et l'application de test utilisent la même version de com.android.support:support-annotations
:
androidTestCompile 'com.android.support:support-annotations:22.1.1'
Ensuite, à cause d’un bogue dans Android Studio, vous devez exclure un fichier nommé LICENSE.txt en utilisant emballageOptions
. Si vous ne le faites pas, l'erreur suivante surviendra lorsque vous essayez d'exécuter un test:
L'exécution a échoué pour la tâche ': app: packageDebugAndroidTest'. Fichiers en double copiés dans APK LICENSE.txt Fichier 1: ~ / .gradle / caches / modules-2 / files-2.1 / org.hamcrest / hamcrest-core / 1.1 / 860340562250678d1a344907ac75754e259cdb14 / hamcrest-core-1.1.jar Fichier 2: ~ / .gradle / caches / modules-2 / fichiers-2.1 / junit / junit-dep / 4.10 / 64417b3bafdecd366afa514bd5beeae6c1f85ece / junit-dep-4.10.jar
Ajoutez l'extrait suivant au bas de votre build.gradle fichier:
android packagingOptions exclu 'LICENSE.txt'
Créer une nouvelle classe de test, CalculatriceTester
, en créant un fichier nommé CalculatorTester.java à l'intérieur de androidTest annuaire. Pour créer un scénario de test UI Automator, votre classe doit être étendue InstrumentationTestCase
.
presse Alt + Insert puis cliquez sur Méthode d'installation pour remplacer le installer
méthode.
presse Alt + Insert encore et cliquez Méthode d'essai générer une nouvelle méthode de test. Nommez cette méthode testAjouter
. le CalculatriceTester
La classe devrait maintenant ressembler à ceci:
Classe publique CalculatorTester étend InstrumentationTestCase @Override public void setUp () lève une exception public void testAdd () lève une Exception
Connectez votre appareil Android à votre ordinateur et appuyez sur le bouton d'accueil de votre appareil pour accéder à l'écran d'accueil..
Retournez sur votre ordinateur et utilisez votre explorateur de fichiers ou votre terminal pour accéder au répertoire où vous avez installé le SDK Android. Ensuite, entrez le outils répertoire à l'intérieur et lancer uiautomatorviewer. Cela va lancer UI Automater Viewer. Vous devriez être présenté avec un écran qui ressemble à ceci:
Cliquez sur le bouton qui ressemble à un téléphone pour capturer une capture d'écran de votre appareil Android. Notez que la capture d'écran que vous venez de capturer est interactive. Cliquez sur l'icône Apps en bas. dans le Détail du nœud section à droite, vous pouvez maintenant voir divers détails de votre sélection comme indiqué ci-dessous.
Pour interagir avec les éléments à l'écran, la structure de test d'UI Automator doit être en mesure de les identifier de manière unique. Dans ce tutoriel, vous utiliserez soit le texte
, la content-desc
, ou la classe
de l'élément pour l'identifier de manière unique.
Comme vous pouvez le constater, l’icône Applications n’a aucune texte
, mais il a un content-desc
. Notez sa valeur, car vous l'utiliserez à l'étape suivante..
Choisissez votre appareil Android et appuyez sur l'icône Applications pour accéder à l'écran affichant les applications installées sur l'appareil. Retournez à UI Automater Viewer et capturer une autre capture d'écran. Puisque vous allez écrire un test pour l'application Calculatrice, cliquez sur son icône pour voir ses détails..
Cette fois le content-desc
est vide, mais le texte
contient la valeur Calculatrice. Prenez note de cela aussi.
Si votre appareil Android exécute un lanceur différent ou une version différente d'Android, les écrans et les détails du nœud seront différents. Cela signifie également que vous devrez apporter quelques modifications à votre code pour correspondre au système d'exploitation..
Revenir à Android Studio pour ajouter du code à la installer
méthode. Comme son nom l'indique, le installer
Cette méthode doit être utilisée pour préparer votre environnement de test. En d’autres termes, c’est là que vous spécifiez ce qui doit être fait avant d’exécuter le test proprement dit..
Vous allez maintenant écrire du code pour simuler ce que vous avez fait sur votre appareil Android à l'étape précédente:
Dans votre classe, déclarez un champ de type UiDevice
et nommez-le dispositif
. Ce champ représente votre appareil Android et vous allez l'utiliser pour simuler une interaction de l'utilisateur..
dispositif privé UiDevice;
dans le installer
méthode, initialiser dispositif
en invoquant le UiDevice.getInstance
méthode, en passant dans un Instrumentation
exemple comme indiqué ci-dessous.
device = UiDevice.getInstance (getInstrumentation ());
Pour simuler en appuyant sur le bouton d'accueil de l'appareil, appelez le pressHome
méthode.
device.pressHome ();
Ensuite, vous devez simuler un événement de clic sur l'icône Apps. Toutefois, vous ne pouvez pas le faire immédiatement, car le périphérique Android aura besoin d’un instant pour naviguer vers l’écran d’accueil. Essayer de cliquer sur l'icône Applications avant qu'elle ne soit visible à l'écran provoquera une exception d'exécution.
Pour attendre que quelque chose se passe, vous devez appeler le attendre
méthode sur le UiDevice
exemple. Pour attendre que l’icône Applications apparaisse à l’écran, utilisez le bouton Jusqu'à.
méthode.
Pour identifier l'icône Apps, utilisez le bouton Par.desc
méthode et passer la valeur applications à cela. Vous devez également spécifier la durée maximale de l'attente en millisecondes. Réglez-le sur 3000. Cela se traduit par le bloc de code suivant:
// Attendez que l'icône Apps apparaisse à l'écran device.wait (Until.hasObject (By.desc ("Apps")), 3000);
Pour obtenir une référence à l'icône Apps, utilisez le bouton findObject
méthode. Une fois que vous avez une référence à l'icône Apps, appelez le Cliquez sur
méthode pour simuler un clic.
UiObject2 appsButton = device.findObject (By.desc ("Apps")); appsButton.click ();
Comme auparavant, nous devons attendre un moment que l’icône de la calculatrice apparaisse à l’écran. Dans l’étape précédente, vous avez constaté que l’icône de la calculatrice peut être identifiée de manière unique par son icône. texte
champ. Nous invoquons le Par.text
méthode pour trouver l'icône, en passant Calculatrice
.
// Attendez que l'icône de la calculatrice apparaisse à l'écran device.wait (Until.hasObject (By.text ("Calculator")), 3000);
Utilisez le findObject
et Cliquez sur
méthodes pour obtenir une référence à l'icône de la calculatrice et simulateur un clic.
UiObject2 calculatorApp = device.findObject (By.text ("Calculator")); calculatorApp.click ();
Lancez l'application Calculator sur votre appareil Android et utilisez UI Automater Viewer l'inspecter. Après avoir capturé une capture d'écran, cliquez sur les boutons pour voir comment vous pouvez les identifier de manière unique..
Pour ce cas de test, vous allez demander à la calculatrice de calculer la valeur de 9 + 9 = et vérifier si cela montre 18 comme résultat. Cela signifie que vous devez savoir comment identifier les boutons avec les étiquettes. 9, +, et =.
Voici ce que j'ai recueilli lors de l'inspection sur mon appareil:
texte
valeurs.content-desc
valeurs définies à plus et équivaut à respectivement.Éditer le texte
widget.Notez que ces valeurs peuvent être différentes sur votre appareil si vous utilisez une version différente de l'application Calculatrice..
Dans les étapes précédentes, vous avez déjà appris que vous pouvez utiliser le findObject
méthode avec soit Par.text
ou Par.desc
pour obtenir une référence à n’importe quel objet à l’écran. Vous savez aussi que vous devez utiliser le Cliquez sur
méthode pour simuler un clic sur l'objet. Le code suivant utilise ces méthodes pour effectuer le calcul 9 + 9 =. Ajoutez-le à la testAjouter
méthode du CalculatriceTester
classe.
// Attend que les boutons de la calculatrice apparaissent à l'écran device.wait (Until.hasObject (By.text ("9")), 3000); // Sélectionnez le bouton pour 9 UiObject2 buttonNine = device.findObject (By.text ("9")); buttonNine.click (); // Sélectionnez le bouton pour + UiObject2 buttonPlus = device.findObject (By.desc ("plus")); buttonPlus.click (); // Appuyez à nouveau sur 9 pendant le calcul de 9 + 9 buttonNine.click (); // Sélectionnez le bouton pour = UiObject2 buttonEquals = device.findObject (By.desc ("equals")); buttonEquals.click ();
À ce stade, vous devez attendre le résultat. Cependant, vous ne pouvez pas utiliser Jusqu'à.
ici parce que le Éditer le texte
contenant le résultat est déjà à l'écran. Au lieu de cela, vous devez utiliser le waitForIdle
méthode pour attendre la fin du calcul. Encore une fois, la durée maximale de l'attente peut être de 3000 ms.
device.waitForIdle (3000);
Obtenez une référence à la Éditer le texte
objet en utilisant le findObject
et Par.clazz
méthodes. Une fois que vous avez la référence, appelez le getText
méthode pour déterminer le résultat du calcul.
UiObject2 resultText = device.findObject (By.clazz ("android.widget.EditText")); String result = resultText.getText ();
Enfin, utilisez affirmer vrai
pour vérifier que le résultat est égal à 18.
assertTrue (result.equals ("18"));
Votre test est maintenant terminé.
Pour exécuter le test, dans la barre d’outils d’Android Studio, sélectionnez la classe. CalculatriceTester
dans le menu déroulant et cliquez sur le bouton de lecture à sa droite.
Une fois la construction terminée, le test doit s'exécuter et se terminer avec succès. Pendant l'exécution du test, vous devriez pouvoir voir l'automatisation de l'interface utilisateur s'exécuter sur votre appareil Android..
Dans ce tutoriel, vous avez appris à utiliser le framework de test UI Automator et le UI Automater Viewer pour créer des tests d'interface utilisateur. Vous avez également constaté à quel point il est facile d’effectuer le test avec Android Studio. Même si nous avons testé une application assez simple, vous pouvez appliquer les concepts que vous avez appris ici pour tester presque toutes les applications Android..
.