Passar opções e filtros para suíte e módulos,Passar opções e filtros para suíte e módulos

Primeiro, certifique-se de entender o tratamento de opções no Tradefed.

A configuração do conjunto descreve as duas camadas que existem na estrutura do conjunto:

  • A suíte de nível superior
  • Os módulos

Num contexto não-suite do Tradefed, não há necessidade de pensar nisso; cada opção vai para a invocação completa. Num contexto de suíte, os módulos são mantidos isolados da suíte; portanto, nem todas as opções estão disponíveis em seu nível.

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

A suíte de nível superior se comporta como a configuração padrão do Tradefed: a configuração completa, incluindo o executor da suíte, recebe todas as opções como uma configuração Tradefed sem suíte.

Passe opções para os módulos

Os módulos por padrão não recebem nenhuma das opções passadas ao comando. Eles precisam ser direcionados explicitamente para receber as opções por meio da opção module-arg . Este isolamento das opções dos 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 receberá a opção fornecida.

Existem maneiras adicionais de passar opções para módulos, como test-arg , que permite passar opções para o executor de teste 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 tem como alvo um módulo específico, mas sim todos os executores de teste de uma determinada classe. test-arg considera apenas implementações de IRemoteTest como potencial receptor das opções.

Passe 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 construção java_test_host, você precisará usar 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 executor HostTest do equipamento de teste que envolve suas classes Java para executá-las.

se o destino do arquivo jar para as opções contiver diversas 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>

Passe filtros para a suíte

Para filtrar alguns testes de um conjunto, usamos --include-filter e --exclude-filter para forçar, respectivamente, a inclusão ou exclusão de um teste ou módulo específico. 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
,

Primeiro, certifique-se de entender o tratamento de opções no Tradefed.

A configuração do conjunto descreve as duas camadas que existem na estrutura do conjunto:

  • A suíte de nível superior
  • Os módulos

Num contexto não-suite do Tradefed, não há necessidade de pensar nisso; cada opção vai para a invocação completa. Num contexto de suíte, os módulos são mantidos isolados da suíte; portanto, nem todas as opções estão disponíveis em seu nível.

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

A suíte de nível superior se comporta como a configuração padrão do Tradefed: a configuração completa, incluindo o executor da suíte, recebe todas as opções como uma configuração Tradefed sem suíte.

Passe opções para os módulos

Os módulos por padrão não recebem nenhuma das opções passadas ao comando. Eles precisam ser direcionados explicitamente para receber as opções por meio da opção module-arg . Este isolamento das opções dos 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 receberá a opção fornecida.

Existem maneiras adicionais de passar opções para módulos, como test-arg , que permite passar opções para o executor de teste 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 tem como alvo um módulo específico, mas sim todos os executores de teste de uma determinada classe. test-arg considera apenas implementações de IRemoteTest como potencial receptor das opções.

Passe 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 construção java_test_host, você precisará usar 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 executor HostTest do equipamento de teste que envolve suas classes Java para executá-las.

se o destino do arquivo jar para as opções contiver diversas 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>

Passe filtros para a suíte

Para filtrar alguns testes de um conjunto, usamos --include-filter e --exclude-filter para forçar, respectivamente, a inclusão ou exclusão de um teste ou módulo específico. 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