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.