Inclure des tests unitaires et fonctionnels

Cette section explique comment exécuter et contribuer aux tests de la Trade Federation après avoir modifié le projet. Par exemple :

  • Où ajouter les nouvelles classes de test unitaire
  • 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 à l'envoi de TF

Ajouter des tests unitaires

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

IMPORTANT: Si vous ajoutez vos nouvelles classes de test unitaire à 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, effectuez un clic droit sur le test, puis 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 de 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 elle-même. Ils nécessitent un appareil Android. Tous les tests fonctionnels doivent respecter la convention d'attribution de noms *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 banc d'essais, y compris certaines conditions d'erreur. Il imprime une sortie détaillée dans la console, y compris des 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 sont configurés pour réussir. Par conséquent, en cas d'échec 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 du sens dans l'une des sous-classes de la suite existantes, préférez les y ajouter. Sinon, n'hésitez pas à ajouter une 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 figurent dans le PATH d'Eclipse. Le moyen le plus simple de le faire est de lancer Eclipse à partir d'une configuration de 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. Build 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 de présoumission TF sur les modifications locales

Si vous souhaitez exécuter une commande semblable à celle de la présoumission 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 ne casse aucun 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 présoumissions avant d'importer le CL.