Inclua testes unitários e funcionais

Esta seção explica como executar e contribuir com os testes da Federação de Comércio após fazer uma alteração no projeto. Isso inclui:

  • Onde adicionar as novas classes de teste de unidade
  • Executando testes de unidade no Eclipse e fora do Eclipse IDE
  • Onde adicionar testes funcionais
  • Executando os testes funcionais
  • Executando algumas das validações de pré-envio do TF localmente

Adicionar testes de unidade

No Android Open Source Project (AOSP), adicione a classe de testes de unidade em: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

IMPORTANTE: Adicionar suas novas aulas de teste de unidade a esses locais resultará na execução automática delas no pré-envio sem configuração adicional.

Executar testes de unidade

Todos os testes de unidade AOSP e testes funcionais para Trade Federation estão localizados no projeto tools/tradefederation/core/tests .

Dentro do Eclipse, para executar um teste de unidade individual, basta clicar com o botão direito do mouse no teste e selecionar Run As > JUnit . Para executar todos os testes de unidade, execute o pacote com.android.tradefed.UnitTests .

Você também pode iniciar o teste de unidade a partir da linha de comando na árvore de origem Tradefed após a compilação, assim: tools/tradefederation/core/javatests/run_tradefed_tests.sh

Os testes de unidade podem ser executados de forma independente, mas os testes funcionais devem ser executados usando a própria Trade Federation; eles exigem um dispositivo Android. Todos os testes funcionais devem seguir a convenção de nomenclatura *FuncTest .

Verifique os resultados dos testes de unidade

Ao executar run_tradefed_tests.sh , os testes de unidade estão exercitando todas as partes da estrutura de teste, incluindo algumas condições de erro. Ele imprimirá uma saída detalhada no console, incluindo rastreamentos de pilha.

O resumo final dos resultados indicará se ocorreu ou não uma falha.

Exemplo de resumo final no console:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

Todos os testes são mantidos para passar, portanto, se ocorrer alguma falha em sua mudança local, certifique-se de que os testes sejam corrigidos.

Adicionar testes funcionais

  • Se seu teste funcional envolve um dispositivo (usa qualquer API ITestDevice ), a definição do conjunto está localizada em com.android.tradefed.DeviceFuncTests . Caso contrário, a definição do conjunto está localizada em com.android.tradefed.FuncTests .

  • Se fizer sentido colocar seus métodos de teste em uma das subclasses de suíte existentes, prefira adicioná-lo lá. Caso contrário, sinta-se à vontade para adicionar uma nova classe ao pacote aplicável.

  • Em qualquer um dos casos, ao adicioná-lo ao conjunto, seu teste é executado automaticamente no pipeline de CI com os outros testes funcionais.

Executar testes funcionais

Para executar um teste funcional do Eclipse:

  1. Certifique-se de que um dispositivo esteja conectado ao host e que o adb e, se necessário, fastboot estejam no PATH do Eclipse. A maneira mais fácil de fazer isso é iniciar o Eclipse a partir de uma configuração de shell com o PATH adequado.
  2. Crie um aplicativo Java. Execute a configuração via Executar > Executar configurações .
  3. Defina o projeto como tradefed-tests e a classe principal como com.android.tradefed.command.CommandRunner .
  4. Execute m tradefed-all .
  5. Forneça os seguintes argumentos de linha de comando na guia Argumentos : host --class <full path of test class to run>
  6. Clique em Executar .

Para executar testes funcionais fora do Eclipse.

  1. Construir Federação Comercial.
  2. Conecte um dispositivo Android ao host.
  3. Execute tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. Opcionalmente, escolha o dispositivo anexando --serial <serial no> conforme aparece na saída de adb devices .

Execute testes de pré-envio de TF contra alterações locais

Se você deseja executar de maneira semelhante ao pré-envio do TF, use isto:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Isso acionará todos os testes de pré-envio do TF contra o TF criado localmente para ajudá-lo a validar se sua alteração não está quebrando nenhum teste.

Os testes de pré-envio do TF são um superconjunto dos testes de unidade acima, mas são mais lentos para executá-los. Portanto, é recomendável executar os testes de unidade durante o desenvolvimento para uma validação mais rápida e executar os pré-envios antes de carregar o CL.