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 configuration de la suite décrit les deux couches qui existent dans la structure de la suite :

  • La suite de premier niveau
  • Les modules

Dans un contexte Tradefed hors suite, il n'est pas nécessaire d'y penser. Chaque option est transmise à l'invocation complète. Dans un contexte de 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 l'exécuteur de la suite, reçoit toutes les options comme une configuration Tradefed hors suite.

Transmettre des options aux modules

Par défaut, les modules ne reçoivent aucune des options transmises à la commande. Ils doivent être explicitement ciblés pour recevoir les options via l'option module-arg. Cette isolation des options de module 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 à l'exécuteur de test de chaque module en fonction du type ou de la classe de l'exécuteur.

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écuteurs de test de la classe donnée. test-arg ne considère que les implémentations d'IRemoteTest (documentation, code source) ou d'ITargetPreparer (documentation, code source) comme récepteurs potentiels des options.

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

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

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

set-option dans ce contexte est l'option de l'exécuteur HostTest du framework de test qui encapsule vos classes Java pour les exécuter.

Si votre cible de fichier JAR pour les options contient plusieurs classes de test, par défaut, elles doivent toutes avoir l'option @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 forcer respectivement l'inclusion ou l'exclusion d'un test ou d'un module particulier. L'exclusion est prioritaire.

Ils 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