Nova tentativa automática de teste

Um teste pode falhar por qualquer motivo, e às vezes, basta executar o teste novamente para que ele seja aprovado (devido a instabilidades, como problemas na infraestrutura). É possível configurar a Tradefed para realizar a repetição automaticamente.

O objetivo da repetição automática é evitar a reexecução de todos os testes. Ela reexecuta apenas os testes com falha, resultando em uma grande economia no tempo de execução.

O Tradefed também oferece suporte à execução de testes várias vezes para detectar falsificações usando o recurso de iterações. Neste caso, todos os testes serão ser executado novamente, e o teste vai falhar se alguma das iterações falhar.

Ativar a repetição automática

A nova tentativa 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 determina o número de novas tentativas ou iterações que serão tentadas. Ele define um limite superior para evitar tentativas infinitas. retry-strategy determina como tentar de novo. consulte as seções a seguir para mais detalhes.

Desativar a repetição automática

Use a seguinte opção:

--retry-strategy NO_RETRY

Repetir falhas

Para repetir falhas no 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é o número máximo de novas tentativas for alcançado, o que ocorrer primeiro.

Iterações

Para executar os testes várias vezes, use as seguintes opções:

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

Como são os resultados?

Por padrão, os usuários que informam resultados recebem os resultados agregados de todas as tentativas.

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

É possível que os repórteres recebam os resultados não agregados. Para isso, é necessário estender a Interface ISupportGranularResults que declara suporte para os resultados granulares (não agregados).

Detalhes da implementação

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

Se não puder implementar ITestFilterReceiver, pode implementar IAutoRetriableTest (link em inglês) para controlar manualmente o funcionamento da nova execução. InstallInstrumentationsTest (em inglês) é um exemplo de implementação dessa interface.