Passare opzioni e filtri alla suite e ai moduli

Innanzitutto, assicurati di comprendere la gestione delle opzioni in Tradefed.

La configurazione della suite descrive i due livelli esistenti nella struttura della suite:

  • La suite di primo livello
  • I moduli

In un contesto Tradefed non di suite, non è necessario pensarci; ogni opzione va all'invocazione completa. In un contesto di suite, i moduli vengono mantenuti isolati dalla suite, quindi non tutte le opzioni sono disponibili a livello di modulo.

Passare le opzioni alla suite di primo livello

La suite di primo livello si comporta come una configurazione Tradefed standard: la configurazione completa, incluso il runner della suite, riceve tutte le opzioni come una configurazione Tradefed non di suite.

Passare le opzioni ai moduli

Per impostazione predefinita, i moduli non ricevono nessuna delle opzioni passate al comando. Devono essere scelti come target in modo esplicito per ricevere le opzioni tramite l'opzione module-arg. Questo isolamento delle opzioni dei moduli semplifica il debug.

Esempio:

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

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

La sintassi garantisce che il modulo di destinazione riceva l'opzione specificata.

Esistono altri modi per passare le opzioni ai moduli, ad esempio test-arg, che consente di passare le opzioni al test runner di ogni modulo in base al tipo o alla classe del runner.

Esempio:

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 sintassi non ha come target un modulo specifico, ma tutti i test runner della classe specificata. test-arg considera solo le implementazioni di IRemoteTest (documentazione, codice sorgente) o ITargetPreparer (documentazione, codice sorgente) come potenziali destinatari delle opzioni.

Passare le opzioni a una classe di test Java in un java_test_host

Se aggiungi un @Option alla classe di test Java come parte di una destinazione di build java_test_host, dovrai utilizzare quanto segue per inserire l'opzione:

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

In questo contesto, set-option è l'opzione del runner HostTest dell'ambiente di test che racchiude le classi Java per eseguirle.

Se il file JAR di destinazione per le opzioni contiene più classi di test, per impostazione predefinita tutte devono avere l'opzione @option specificata oppure utilizzare la seguente sintassi per scegliere come target una singola classe:

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

Passare i filtri alla suite

Per filtrare alcuni test da una suite, utilizziamo --include-filter e --exclude-filter per forzare rispettivamente l'inclusione o l'esclusione di un test o un modulo specifico. L'esclusione ha la priorità.

Utilizzano questo formato: [abi] <module-name> [test name]

Esempi:

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

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