Test de robotiste d'interface Android avec Teamcity

Comme cela n'a pas été répondu (Peut-être ne l'ai-je pas trouvé) auparavant, j'ai enquêté sur la question suivante:

Comment effectuer des tests fonctionnels automatisés sur les appareils Android avec robotium et les signaler au serveur d'intégration continue comme TeamCity?

  • Comment effectuer une opération de clic sur la fenêtre d'info personnalisée du marqueur sur google map V2 dans Android
  • Comment obtenir le temps à l'emplacement actuel
  • Comment effacer une activité spécifique de l'historique de la pile?
  • Pourquoi n'est-ce pas onRestoreInstanceState appelé après onStart?
  • Quelle est la meilleure manière de partager les données entre les activités?
  • Comment trouver la hauteur de la barre d'état dans Android via React Native?
  • Gradle Build est bloqué lors de l'exécution des tâches:
  • Faites défiler jusqu'à la dernière ligne de TableLayout dans une ScrollView
  • Comment changer une distance de 1 mètre à pixel?
  • Comment un message d'erreur peut-il être défini pour le Spinner dans Android?
  • Android - Load PDF / PDF Viewer
  • Erreur: "app_name" n'est pas traduit en af
  • One Solution collect form web for “Test de robotiste d'interface Android avec Teamcity”

    Comme je n'ai trouvé aucune réponse à cette question spécifique, j'ai enquêté. Voici la sortie de mon enquête et une procédure rapide pour aider les gens à effectuer des tests fonctionnels automatisés sur des applications Android à l'aide de robotium, puis les déclarer à un serveur d'intégration continu comme TeamCity. Notez que ce n'est peut-être pas la meilleure solution, mais j'ai estimé que les gens pouvaient être dans la même situation que moi. Alors voilà!

    Les bibliothèques suivantes ont été utilisées:

    • Robotium ( https://code.google.com/p/robotium/ ): il s'agit d'un framework d'automatisation de test Android. Cela vous aide à effectuer des tests automatisés, comme cliquer sur les boutons, remplir automatiquement le texte et beaucoup d'autres choses.
    • Android Junit Report ( http://zutubi.com/source/projects/android-junit-report/ ): cette bibliothèque est très utile pour publier le résultat du test à un format xml exploitable. Si vous souhaitez exécuter vos tests via Eclipse, vous verrez les résultats de vos tests sur la route, mais pour les exporter, cette bibliothèque est très utile

    En supposant que vous avez un projet Android pour tester, créez un projet de test Android (Eclipse a un bon flux de travail pour le créer pour vous) et configurez-le avec Robotium. Des instructions détaillées très claires sur la façon de le faire peuvent être trouvées ici: https://code.google.com/p/robotium/wiki/Getting_Started

    Ensuite, vous devez ajouter Android Junit Report à votre projet afin de pouvoir récupérer les résultats de vos tests. Pour ce faire, ajoutez la bibliothèque Android Junit Report * .jar dans votre dossier lib et ajoutez-la à votre chemin de construction (dans Eclipse: Projet -> Propriétés -> Chemin de construction Java -> Bibliothèques -> Ajouter un jet externe ).

    Vous devez également modifier le coureur de test de votre projet. Dans AndroidManifest.xml de votre projet de test, ajoutez ce qui suit:

    <instrumentation android:name="com.zutubi.android.junitreport.JUnitReportTestRunner" android:targetPackage="<insert your package ex:com.alth.myproject" /> 

    Une fois que cela est fait, vous devriez pouvoir exécuter vos tests correctement. Les résultats des tests devraient être disponibles dans votre appareil (dans le dossier suivant /data/data//files/junit-report.xml )


    La prochaine étape consiste à configurer vos étapes de construction TeamCity pour effectuer toutes les différentes actions nécessaires pour exécuter vos tests. Veuillez noter que ma solution pourrait ne pas être optimale.

    • Étape de construction 1: Nettoyer – Coureur de ligne de commande – Cette étape de construction peut être facultative en fonction de la façon dont vous décidez de créer vos fichiers build.xml et ces décisions de construction.

       rm -rf <report folder> rm -rf <Project build.xml> rm -rf <Test project build.xml> android update project -p <Path to your project> android update test-projecct -m <Path to your project, relative to the test project> -p <Path to your test project> 
    • Étape de construction 2: Lancer AVD – Ligne de ligne de commande – Cette étape de génération lance le périphérique virtuel Android. Cette étape peut être facultative si vous décidez d'exécuter les tests sur un périphérique réel.

       emulator -avd <nameOfYourAvd> -no-boot-anim & sleep 45 

      La fonction & evite build est interrompue par le lancement du périphérique virtuel (c'est la commande shell basique). La commande de sommeil est utilisée pour essayer de laisser l'AVD être prêt pour la prochaine étape de construction

    • Construire étape 3: Test de la version de l'application – Ant runner: Créez le projet de test, installez-le sur le périphérique virtuel

       Path to build xml file : <Path to your test project>/build.xml Additional Ant command line parameters : -f <Path to your test project>/build.xml clean debug install -Dsdk.dir=<Path to your android sdk> 
    • Étape de construction 4: Déverrouillage AVD – Coureur de ligne de commande: déverrouille l'écran AVD à des fins de test

        bash avdUnlock.sh 

      Body of avdUnlock.sh ici: ( http://pastie.org/7919761 ). Ce script envoie des informations sur le port AVD régulier afin de déverrouiller l'écran. Cela peut être amélioré en envoyant la commande uniquement à un port spécifique et en modifiant l'étape de construction 2 pour ajouter un port spécifique au lancement de l'émulateur. Cela ne fait pas vraiment partie de ce mode d'emploi

    • Étape de construction 5: Essais de lancement – Coureur de ligne de commande: lancer les tests

        adb shell pm list instrumentation adb shell am instrument -w <insert your test package ex:com.alth.myproject.test>/com.zutubi.android.junitreport.JUnitReportTestRunner 

      La première commande AdB pourrait être supprimée. Ce n'est qu'avec le but du débogage afin de voir quelle instrumentation a été installée sur le périphérique.

    • Étape de construction 6: Essais de récupération – Chemin de ligne de ligne de commande: Récupérez le rapport des tests à partir de l'appareil

        adb pull /data/data/<insert your project package ex:com.alth.myproject>/files/junit-report.xml <report folder>/junit-report.xml 
    • Étape de construction 7: Emulateur final tuer – Coureur de ligne de commande: Tuer le périphérique virtuel Android en cours d'exécution

        adb emu kill 
    • Caractéristiques de construction supplémentaires: traitement des rapports XML – Type de rapport: Ant JUnit

        Monitoring rules : <report folder>/*.xml 

    Ce mode d'emploi n'est évidemment pas optimal mais répond à la question initiale. Dans ce cas, il est possible d'extraire le rapport des tests fonctionnels android et de l'alimenter en équipe afin de surveiller les résultats des tests.

    J'espère que cela aidera quelqu'un, et j'essaierai de répondre à vos questions si vous en avez une.

    Al_th

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.