Nova tentativa automática de teste

Um teste pode falhar por qualquer motivo e, às vezes, apenas executar novamente o teste pode o suficiente para que ele seja aprovado novamente (devido a inconsistência, como problemas no infraestruturas subjacentes). Você pode configurar o Tradefed para realizar a nova tentativa automaticamente.

A ideia central da repetição automática é evitar a reexecução de todos os testes. ele é executado novamente apenas os testes com falha, resultando em grandes economias no tempo de execução.

O Tradefed também permite executar testes várias vezes para detectar inconsistência por meio do recurso de iterações. Neste caso, todos os testes serão executada novamente, e o teste vai falhar se alguma das iterações falhar.

Ativar nova tentativa automática

A nova tentativa automática é controlada pelo Objeto "RetryDecision" que fornece duas opções para ativar o recurso: max-testcase-run-count e retry-strategy.

max-testcase-run-count impulsiona o número de novas tentativas ou iterações que vão pode ser tentado. Ela define um limite superior para evitar novas tentativas infinitas. retry-strategy determina como tentar de novo. consulte as seções a seguir para mais detalhes.

Desativar nova tentativa 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 novamente por um período específico, as opções a seguir podem ser usadas:

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

Como serão os resultados?

Por padrão, os informantes de resultados receberão resultados agregados de todas as tentativas.

Por exemplo: uma Fail e uma Pass para RETRY_ANY_FAILURE resultarão em uma agregou Pass desde que a nova tentativa conseguiu limpar a falha.

É possível que os informantes 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 for possível implementar o ITestFilterReceiver, é possível 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.