Incluir testes de unidade e funcionais

Nesta seção, explicamos como executar e contribuir com os testes do Trade Federation depois de fazer uma mudança no projeto. Isso inclui:

  • Onde adicionar as novas classes de teste de unidade
  • Execução de testes de unidade no Eclipse e fora do ambiente de desenvolvimento integrado do Eclipse
  • Onde adicionar testes funcionais
  • Como executar os testes funcionais
  • Executar algumas 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 as novas classes de teste de unidade a esses locais fará com que elas sejam executadas automaticamente na pré-submissão sem configuração adicional.

Executar testes de unidade

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

No Eclipse, para executar um teste de unidade individual, clique com o botão direito do mouse no teste e selecione Executar como > JUnit. Para executar todos os testes de unidade, execute o conjunto com.android.tradefed.UnitTests.

Também é possível iniciar o teste de unidade na linha de comando na árvore de origem do Tradefed após a criação, da seguinte maneira: tools/tradefederation/core/javatests/run_tradefed_tests.sh

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

Verificar os resultados dos testes de unidade

Ao executar run_tradefed_tests.sh, os testes de unidade exercem todas as partes do arnês de teste, incluindo algumas condições de erro. Ele vai imprimir a saída detalhada no console, incluindo stack traces.

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

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 serem aprovados. Portanto, se ocorrer alguma falha na sua mudança local, verifique se os testes foram corrigidos.

Adicionar testes funcionais

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

  • Se os métodos de teste fizerem sentido em uma das subclasses de conjunto atuais, adicione-os lá. Caso contrário, adicione uma nova classe ao conjunto aplicável.

  • Em qualquer caso, ao adicionar o teste ao pacote, ele é executado automaticamente no pipeline de CI com os outros testes funcionais.

Executar testes funcionais

Para executar um teste funcional no Eclipse:

  1. Verifique se um dispositivo está conectado ao host e se adb e, se necessário, fastboot estão no PATH do Eclipse. A maneira mais fácil de fazer isso é iniciar o Eclipse em uma configuração de shell com o PATH adequado.
  2. Crie um aplicativo Java. Configuração de execução em Run > Run configurations.
  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. Construa a Federação de Comércio.
  2. Conecte um dispositivo Android ao host.
  3. Run tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. Se quiser, escolha o dispositivo anexando --serial <serial no> como ele aparece na saída de adb devices.

Executar testes de pré-envio do TF em relação a mudanças locais

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

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Isso vai acionar todos os testes de pré-envio do TF no seu TF criado localmente para ajudar a validar se a mudança não está interrompendo nenhum teste.

Os testes de pré-envio do TF são um superconjunto dos testes de unidade acima, mas são mais lentos para serem executados. Por isso, é recomendável executar os testes de unidade durante o desenvolvimento para uma validação mais rápida e executar os pré-envios antes de fazer upload da CL.