Inclure des tests unitaires et fonctionnels

Cette section explique comment exécuter les tests Trade Federation et y contribuer après avoir apporté une modification au projet. Par exemple :

  • Où ajouter les nouvelles classes de tests unitaires
  • Exécuter des tests unitaires dans Eclipse et en dehors de l'IDE Eclipse
  • Où ajouter des tests fonctionnels
  • Exécuter les tests fonctionnels
  • Exécuter localement une partie de la validation préalable de TF

Ajouter des tests unitaires

Dans le projet Android Open Source (AOSP), ajoutez la classe de tests unitaires dans : tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

IMPORTANT : Si vous ajoutez vos nouvelles classes de tests unitaires à ces emplacements, elles s'exécuteront automatiquement en mode préalable sans configuration supplémentaire.

Exécuter des tests unitaires

Tous les tests unitaires et fonctionnels AOSP pour Trade Federation se trouvent dans le tools/tradefederation/core/tests projet.

Dans Eclipse, pour exécuter un test unitaire individuel, faites simplement un clic droit sur le test et sélectionnez Run As > JUnit (Exécuter en tant que > JUnit). Pour exécuter tous les tests unitaires, exécutez la suite com.android.tradefed.UnitTests.

Vous pouvez également démarrer le test unitaire à partir de la ligne de commande dans l'arborescence source Tradefed après la compilation, comme suit : tools/tradefederation/core/javatests/run_tradefed_tests.sh

Les tests unitaires peuvent être exécutés de manière autonome, mais les tests fonctionnels doivent être exécutés à l'aide de Trade Federation lui-même. Ils nécessitent un appareil Android. Tous les tests fonctionnels doivent respecter la convention de dénomination *FuncTest.

Vérifier les résultats des tests unitaires

Lorsque vous exécutez run_tradefed_tests.sh, les tests unitaires exercent toutes les parties du harnais de test, y compris certaines conditions d'erreur. Il affiche une sortie détaillée dans la console, y compris les traces de pile.

Le récapitulatif final des résultats indique si une erreur s'est produite ou non.

Exemple de récapitulatif final dans la console :

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

Tous les tests sont conçus pour réussir. Par conséquent, si une erreur se produit lors de votre modification locale, assurez-vous que les tests sont corrigés.

Ajouter des tests fonctionnels

  • Si votre test fonctionnel implique un appareil (utilise une API ITestDevice), la définition de la suite se trouve dans com.android.tradefed.DeviceFuncTests. Sinon, la définition de la suite se trouve dans com.android.tradefed.FuncTests.

  • Si vos méthodes de test ont un sens dans l'une des sous-classes de suite existantes, préférez l'y ajouter. Sinon, n'hésitez pas à ajouter une nouvelle classe à la suite applicable.

  • Dans les deux cas, en l'ajoutant à la suite, votre test est automatiquement exécuté dans le pipeline CI avec les autres tests fonctionnels.

Exécuter des tests fonctionnels

Pour exécuter un test fonctionnel à partir d'Eclipse :

  1. Assurez-vous qu'un appareil est connecté à l'hôte et que adb et, si nécessaire, fastboot se trouvent dans le PATH d'Eclipse. Pour ce faire, le moyen le plus simple consiste à lancer Eclipse à partir d'une configuration shell avec le PATH approprié.
  2. Créez une application Java. Exécutez la configuration via Run > Run configurations (Exécuter > Exécuter des configurations).
  3. Définissez le projet sur tradefed-tests et la classe principale sur com.android.tradefed.command.CommandRunner.
  4. Exécutez m tradefed-all.
  5. Fournissez les arguments de ligne de commande suivants dans l'onglet Arguments : host --class <full path of test class to run>
  6. Cliquez sur Run (Exécuter).

Pour exécuter des tests fonctionnels en dehors d'Eclipse :

  1. Compilez Trade Federation.
  2. Connectez un appareil Android à l'hôte.
  3. Exécutez tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. Vous pouvez également choisir l'appareil en ajoutant --serial <serial no> tel qu'il apparaît dans la sortie de adb devices.

Exécuter des tests préalables TF sur des modifications locales

Si vous souhaitez exécuter les tests de la même manière que la validation préalable de TF, utilisez la commande suivante :

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Cela déclenchera tous les tests préalables de TF sur votre TF compilé localement pour vous aider à vérifier que votre modification n'interrompt aucun test.

Les tests préalables de TF sont un sur-ensemble des tests unitaires ci-dessus, mais leur exécution est plus lente. Il est donc recommandé d'exécuter les tests unitaires pendant le développement pour une validation plus rapide et d'exécuter les tests préalables avant d'importer le CL.