Passare opzioni e filtri alla suite e ai moduli

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

Configurazione della suite descrive i due livelli esistenti nella struttura della suite:

  • La suite di primo livello
  • I moduli

In un contesto Tradefed non suite, non è necessario pensarci: ogni opzione viene utilizzata per l'invocazione completa. Nel contesto di una suite, i moduli vengono tenuti isolati dalla suite, quindi non tutte le opzioni sono disponibili a questo livello.

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 trasmesse 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 come potenziali destinatari delle opzioni.

Passare opzioni a una classe di test Java in un java_test_host

Se aggiungi un @Option alla classe di test Java nell'ambito di un target di build java_test_host, devi utilizzare quanto segue per inserire questa opzione:

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

set-option in questo contesto è l'opzione del runner HostTest del test harness che esegue il wrapping delle 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 @specificata o utilizzare la sintassi seguente per scegliere come target una singola classe:

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

Trasferire 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 particolare test o modulo. 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