Transmitir opções e filtros para pacotes e módulos

Primeiro, entenda a Manipulação 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 não pacote do Tradefed, não é necessário pensar sobre isso: 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.

Passe opções para a suíte de nível superior

O pacote de nível superior se comporta como a 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 não pacote.

Transmitir opções para os 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 usando a 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 de destino vai receber a opção especificada.

Há outras maneiras de transmitir opções para módulos, como test-arg, que permitem 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 é destinada a um módulo específico, mas a todos os executores de testes da classe especificada. test-arg considera apenas implementações de IRemoteTest 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, use o seguinte para injetar essa opção:

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

set-option, neste contexto, é a opção do HostTest runner do harness 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, todas elas precisarão ter a @option especificada ou usar a sintaxe a seguir 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.

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