Transmettre des options et des filtres à la suite et aux modules

Tout d'abord, assurez-vous de comprendre la gestion des options dans Tradefed.

La section Configuration de la suite décrit les deux couches qui existent dans la structure de la suite :

  • Suite de premier niveau
  • Les modules

Dans un contexte Tradefed non suite, il n'est pas nécessaire d'y penser ; chaque option est transmise à l'invocation complète. Dans le contexte d'une suite, les modules sont isolés de la suite. Par conséquent, toutes les options ne sont pas disponibles à leur niveau.

Transmettre des options à la suite de premier niveau

La suite de premier niveau se comporte comme une configuration Tradefed standard : la configuration complète, y compris le lanceur de suite, reçoit toutes les options comme une configuration Tradefed non suite.

Transmettre des options aux modules

Par défaut, les modules ne reçoivent aucune des options transmises à la commande. Elles doivent être explicitement ciblées pour recevoir les options via l'option module-arg. Cette isolation des options de modules facilite le débogage.

Exemple :

cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>

cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true

La syntaxe garantit que le module ciblé recevra l'option donnée.

Il existe d'autres façons de transmettre des options aux modules, comme test-arg, qui vous permet de transmettre des options au programme d'exécution des tests de chaque module en fonction du type ou de la classe du programme d'exécution.

Exemple :

cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>

cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

La syntaxe ne cible pas un module particulier, mais plutôt tous les exécutants de tests de la classe donnée. test-arg ne considère que les implémentations de IRemoteTest comme récepteurs potentiels des options.

Transmettre des options à une classe de test Java dans un java_test_host

Si vous ajoutez un @Option à votre classe de test Java dans le cadre d'une cible de compilation java_test_host, vous devrez utiliser ce qui suit pour injecter cette option :

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

Dans ce contexte, set-option est l'option du programme d'exécution HostTest du harnais de test qui encapsule vos classes Java pour les exécuter.

Si votre fichier JAR cible pour les options contient plusieurs classes de test, par défaut, elles doivent toutes avoir l'option @spécifiée ou utiliser la syntaxe suivante pour cibler une seule classe :

cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>

Transmettre des filtres à la suite

Pour filtrer certains tests d'une suite, nous utilisons --include-filter et --exclude-filter pour inclure ou exclure de force un test ou un module particulier. L'exclusion est prioritaire.

Elles utilisent le format suivant : [abi] <module-name> [test name].

Exemples :

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes