Test Runner é a unidade de execução do fluxo de invocação. É aqui que os testes realmente são executados.
Interfaces
Os executores de teste são definidos por meio da interface IRemoteTest , que fornece um método de run
simples para implementação que será chamado quando os testes forem executados.
Isso permite que a definição mais simples de uma execução de teste ocorra. Mas, na prática, os redatores de teste precisarão de mais informações para escrever corretamente seus testes, geralmente informações de compilação e dispositivo. É aqui que as seguintes interfaces são úteis.
Básico
Essas duas interfaces são as mais utilizadas atualmente, pois representam as necessidades básicas da maioria dos testes.
- IBuildReceiver permite que o teste obtenha o objeto
IBuildInfo
criado na etapa do provedor de compilação contendo todas as informações e artefatos relacionados à configuração do teste. - IDeviceTest permite que o TF receba o objeto
ITestDevice
que representa o dispositivo em teste e fornece uma API para interagir com ele.
Avançado
Existem interfaces adicionais que permitem uma interação mais complexa entre o equipamento de teste e o executor de teste:
- ITestFilterReceiver , que permite que o teste receba um conjunto de filtros para executar apenas determinados testes. Isso é útil na execução de um subconjunto dos testes.
- ITestCollector , que permite que um executor de teste apenas execute os testes em vez de executá-los de fato. Isso é útil para coletar a lista de todos os casos de teste.
Executores de teste existentes
Já existe uma variedade de executores de teste, alguns para os principais tipos de teste:
- AndroidJUnitTest / InstrumentationTest (associado ao AJUR no lado do dispositivo)
- GTest (lado do dispositivo e do host) com a biblioteca googletest
- Testes orientados por host (testes Java que são executados no host e chamam o dispositivo de lá)
- Testes de unidade Java puros (nosso runner faz os dois)
- Testes Python
- Testes do Google Benchmark com biblioteca de benchmark
Existe um grande número de executores de teste personalizados além dos acima; eles servem a propósitos especializados para alguns testes funcionais, por exemplo, Teste de Inicialização.
Escrevendo um novo executor de testes
Mais orientações sobre como escrever um novo executor de testes estão disponíveis na seção de redação de testes .