Primeiro, entenda o processamento de opções no Tradefed.
Configuração da suíte descreve as duas camadas que existem na estrutura da suíte:
- O pacote de nível superior
- Os módulos
Em um contexto Tradefed sem suíte, não é necessário pensar nisso. Todas as opções vão para a invocação completa. Em um contexto de conjunto, os módulos são mantidos isolados do conjunto. Por isso, nem todas as opções estão disponíveis no nível deles.
Transmitir opções para o conjunto 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 do pacote, recebe todas as opções como uma configuração do Tradefed que não é de pacote.
Transmitir opções aos módulos
Por padrão, os módulos não recebem nenhuma das opções transmitidas ao comando.
Eles precisam ser segmentados 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 segmentado 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 na 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 tem como destino um módulo específico, mas sim todos os executores de teste
da classe especificada. O test-arg
considera apenas implementações de
IRemoteTest
como possível receptor 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, use 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 framework de teste que encapsula 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 tenham o @option especificado ou usem a seguinte sintaxe para segmentar 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.
Elas 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