Nova tentativa automática de teste

Um teste pode falhar por qualquer motivo, e às vezes basta executá-lo novamente para que ele seja aprovado (devido a instabilidade, como problemas na infraestrutura subjacente). Você pode configurar a Tradefed para realizar a repetição automaticamente.

O objetivo principal da repetição automática é evitar a execução de todos os testes. Ela executa novamente apenas os testes com falha, resultando em grandes economias no tempo de execução.

A Tradefed também oferece suporte à execução de testes várias vezes para detectar instabilidade usando o recurso iterations. Nesse caso, todos os testes serão executados novamente, e o teste falhará se alguma das iterações falhar.

Ativar repetição automática

A repetição automática é controlada pelo objeto RetryDecision que oferece duas opções para ativar o recurso: max-testcase-run-count e retry-strategy.

max-testcase-run-count controla o número de repetições ou iterações que serão tentadas. Ele define um limite superior para evitar repetições infinitas. retry-strategy controla a decisão de como repetir. Consulte as seções a seguir para mais detalhes.

Desativar repetição automática

Use a seguinte opção:

--retry-strategy NO_RETRY

Repetir falhas

Para repetir falhas de teste, use as seguintes opções:

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

Isso vai repetir a falha até que ela seja aprovada ou até que o número máximo de repetições seja atingido, o que ocorrer primeiro.

da Meridian

Para executar testes novamente várias vezes, as seguintes opções podem ser usadas:

--retry-strategy ITERATIONS --max-testcase-run-count X

Como são os resultados?

Os geradores de relatórios de resultados recebem, por padrão, resultados agregados de todas as tentativas.

Por exemplo, um Fail e um Pass para RETRY_ANY_FAILURE resultarão em um Pass agregado, já que a repetição conseguiu limpar a falha.

É possível que os geradores de relatórios recebam os resultados não agregados. Para isso, eles precisam estender a interface ISupportGranularResults que declara suporte para os resultados granulares (não agregados).

Detalhes de implementação

Para ativar a repetição automática para executar falhas novamente no nível do caso de teste, implemente ITestFilterReceiver.

Se você não puder implementar ITestFilterReceiver, implemente IAutoRetriableTest para controlar manualmente como a execução é feita. InstalledInstrumentationsTest é um exemplo de implementação dessa interface.