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 une partie de la validation TF avant l'envoi localement

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 pré-soumission sans configuration supplémentaire.

Exécuter des tests unitaires

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

Dans Eclipse, pour exécuter un test unitaire individuel, il vous suffit d'effectuer un clic droit sur le test et de sélectionner 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 affichera une sortie détaillée dans la console, y compris les traces de pile.

Le récapitulatif final des résultats indiquera si un échec s'est produit 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 doivent réussir. Si un échec se produit lors de votre modification locale, veuillez vous assurer 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 du sens dans l'une des sous-classes de suite existantes, préférez les ajouter à cet endroit. 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 depuis Eclipse :

  1. Assurez-vous qu'un appareil est connecté à l'hôte et que adb et, si nécessaire, fastboot se trouvent dans le chemin d'accès d'Eclipse. 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 les 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. Indiquez 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. Construisez la Fédération du commerce.
  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 de pré-soumission TF sur les modifications locales

Si vous souhaitez exécuter le test de la même manière que le pré-commit TF, utilisez la commande suivante :

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Cela déclenchera tous les tests de pré-soumission TF sur votre TF créé localement pour vous aider à vérifier que votre modification n'entraîne pas l'échec d'un test.

Les tests de pré-soumission 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 de pré-soumission avant d'importer la CL.