O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Repetição de teste automática

Um teste pode falhar por qualquer motivo e, às vezes, simplesmente reexecutá-lo é suficiente para que ele seja aprovado novamente (devido a falhas, como problemas na infraestrutura subjacente). Você pode configurar o Tradefed para conduzir a nova tentativa automaticamente.

O núcleo da nova tentativa automática é evitar a nova execução de todos os testes; ele reexecuta apenas os testes que falharam, resultando em grande economia no tempo de execução.

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

Ativando o recurso

A nova tentativa automática é controlada por meio do objeto RetryDecision, que fornece duas opções para habilitar o recurso: max-testcase-run-count e retry-strategy .

max-testcase-run-count orienta o número de novas tentativas ou iterações que serão feitas. Ele define um limite superior para evitar tentativas indefinidas. retry-strategy conduz a decisão de como tentar novamente; consulte as seções a seguir para obter mais detalhes.

Tentativas de falhas

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

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

Isso tentará novamente a falha até que ela passe ou até que o número máximo de tentativas seja atingido, o que ocorrer primeiro.

Iterações

Para executar novamente os testes por um certo tempo, as seguintes opções podem ser usadas:

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

Como são os resultados?

Os relatores de resultados, por padrão, receberão os resultados agregados de todas as tentativas.

Por exemplo: uma Fail e uma Pass para RETRY_ANY_FAILURE irá resultar em um agregado Pass desde a repetição conseguiu limpar a falha.

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

Detalhes de Implementação

Para ativar a nova tentativa automática para executar novamente as falhas no nível do caso de teste, implemente ITestFilterReceiver .

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