Primeiro, entenda o processamento de opções no Tradefed.
A configuração do pacote descreve as duas camadas que existem na estrutura do pacote:
- O pacote de nível superior
- Os módulos
Em um contexto do Tradefed que não seja de pacote, não é necessário pensar nisso. Todas as opções vão para a invocação completa. Em um contexto de pacote, os módulos são mantidos isolados do pacote. Portanto, nem todas as opções estão disponíveis no nível deles.
Transmitir opções para o pacote de nível superior
O pacote de nível superior se comporta como uma configuração padrão do Tradefed: a configuração completa, incluindo o executor de pacotes, recebe todas as opções como uma configuração do Tradefed que não seja de pacote.
Transmitir opções para os módulos
Os módulos, por padrão, não recebem nenhuma das opções transmitidas ao comando.
Eles precisam ser direcionados explicitamente para receber as opções pela opção module-arg. Esse isolamento das opções de módulos facilita a depuração.
Exemplo:
cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>
cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true
A sintaxe garante que o módulo direcionado receba a opção especificada.
Há outras maneiras de transmitir opções para módulos, como test-arg, que permite transmitir opções para o executor de testes de cada módulo com base no tipo ou classe do executor.
Exemplo:
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
A sintaxe não direciona um módulo específico, mas sim todos os executores de teste da classe especificada. test-arg considera apenas implementações de IRemoteTest
(documentação, código-fonte) ou ITargetPreparer (documentação,
código-fonte) como possíveis receptores das opções.
Transmitir opções para uma classe de teste Java em um java_test_host
Se você estiver adicionando um @Option à sua classe de teste Java como parte de um destino de build java_test_host, será necessário usar o seguinte para injetar essa opção:
cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>
set-option nesse contexto é a opção do executor HostTest do ambiente de teste que envolve suas classes Java para executá-las.
Se o destino do arquivo JAR para as opções contiver várias classes de teste, por padrão, espera-se que todas elas tenham a @option especificada ou usem a seguinte sintaxe para direcionar uma única classe:
cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>
Transmitir filtros para o pacote
Para filtrar alguns testes de um pacote, usamos --include-filter e --exclude-filter para forçar a inclusão ou exclusão de um teste ou módulo específico, respectivamente. A exclusão tem prioridade.
Eles usam este formato: [abi] <module-name> [test name]
Exemplos:
--include-filter CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes