O executor de teste é a unidade de execução do fluxo de invocação. É aqui que os testes são executados.
Interfaces
Os executores de teste são definidos pela interface
IRemoteTest,
que fornece um método run
simples para implementar 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 criadores de testes precisam de mais informações para escrever os testes corretamente, geralmente informações de build e dispositivo. É aí que as seguintes interfaces são úteis.
Básico
Essas duas interfaces são as mais usadas atualmente, já que representam as necessidades básicas da maioria dos testes.
- O IBuildReceiver
permite que o teste receba o objeto
IBuildInfo
criado na etapa build provider que contém todas as informações e artefatos relacionados à configuração do teste. - A IDeviceTest permite que o TF receba o objeto
ITestDevice
que representa o dispositivo em teste e fornece uma API para interagir com ele.
Avançadas
Há outras interfaces que permitem uma interação mais complexa entre o ambiente de teste e o executor de testes:
- ITestFilterReceiver, que permite que o teste receba um conjunto de filtros para executar apenas determinados testes. Isso é útil para executar um subconjunto dos testes.
- ITestCollector, que permite que um executor de testes apenas faça um teste seco em vez de executá-los. Isso é útil para coletar a lista de todos os casos de teste.
Executores de teste atuais
Já existem vários 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 controlados pelo host (testes em Java executados no host e que chamam o dispositivo de lá)
- Testes de unidade Java puro (nosso executor faz os dois)
- Testes em Python
- Testes de comparativo de mercado do Google com a biblioteca de comparativo de mercado
Além dos acima, há um grande número de executores de testes personalizados, que atendem a finalidades especializadas para alguns testes funcionais, como o teste de inicialização.
Criar um novo executor de testes
Mais orientações sobre como escrever um novo executor de testes estão disponíveis na seção de escrita de testes.