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 haut niveau
- Les modules
Dans un contexte Tradefed hors suite, il n'y a pas lieu d'y penser ; chaque option va à l'invocation complète. Dans un contexte de suite, les modules sont maintenus isolés de la suite ; toutes les options ne sont donc pas disponibles à leur niveau.
Passez les options à la suite de niveau supérieur
La suite de niveau supérieur se comporte comme une configuration Tradefed standard : la configuration complète, y compris l'exécuteur de suite, reçoit toutes les options comme une configuration Tradefed sans suite.
Passer les options aux modules
Les modules par défaut ne reçoivent aucune des options passées à la commande. Ils doivent être explicitement ciblés pour recevoir les options via l'option module-arg
. Cette isolation des options des 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 moyens de transmettre des options à des modules tels que test-arg
, qui vous permet de transmettre des options au lanceur de test de chaque module en fonction du type ou de la classe du lanceur.
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 testeurs de la classe donnée. test-arg
considère uniquement les implémentations de IRemoteTest comme récepteur potentiel des options.
Passer l'option à 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 génération 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>
set-option dans ce contexte est l'option de l'exécuteur HostTest du harnais 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 le @option spécifié 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>
Passer les filtres à la suite
Pour filtrer certains tests d'une suite, nous utilisons --include-filter
et --exclude-filter
pour respectivement forcer l'inclusion ou l'exclusion d'un test ou d'un module particulier. L'exclusion est prioritaire.
Ils utilisent ce format : [abi] <module-name> [test name]
Exemples:
--include-filter CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes