Riprova automatica del test

Un test potrebbe non riuscire per qualsiasi motivo e talvolta è sufficiente rieseguire il test per farlo passare di nuovo (a causa di instabilità, ad esempio a causa di problemi nell'infrastruttura sottostante). È possibile configurare Tradefed per eseguire il nuovo tentativo automaticamente.

Il nucleo della ripetizione automatica è evitare di rieseguire tutti i test; riesegue solo i test falliti, con un notevole risparmio di tempo di esecuzione.

Tradefed supporta anche l'esecuzione di test più volte al fine di rilevare la debolezza tramite la funzione di iterazioni . In questo caso, tutti i test verranno rieseguiti e il test fallirà se una qualsiasi delle iterazioni fallisce.

Abilitazione della funzione

Il nuovo tentativo automatico è controllato tramite l' oggetto RetryDecision che fornisce due opzioni per abilitare la funzionalità: max-testcase-run-count e retry-strategy .

max-testcase-run-count il numero di tentativi o iterazioni che verranno tentati. Imposta un limite superiore per evitare di riprovare per sempre. retry-strategy guida la decisione su come riprovare; vedere le sezioni seguenti per maggiori dettagli.

Nuovo tentativo di errore

Per riprovare gli errori del test, utilizzare le seguenti opzioni:

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

Ciò riproverà l'errore fino a quando non viene superato o fino a quando non viene raggiunto il numero massimo di tentativi, a seconda dell'evento che si verifica per primo.

Iterazioni

Per rieseguire i test per un certo numero di volte, è possibile utilizzare le seguenti opzioni:

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

Come sono i risultati?

I reporter dei risultati per impostazione predefinita riceveranno i risultati aggregati di tutti i tentativi.

Ad esempio: un Fail e un Pass per RETRY_ANY_FAILURE risulteranno in un Pass aggregato poiché il nuovo tentativo è riuscito a eliminare l'errore.

È possibile che i giornalisti ricevano i risultati non aggregati. Per fare ciò, devono estendere l' interfaccia ISupportGranularResults che dichiara il supporto per i risultati granulari (non aggregati).

Dettagli di implementazione

Per abilitare il tentativo automatico di rieseguire gli errori a livello di test case, implementare ITestFilterReceiver .

Se non è possibile implementare ITestFilterReceiver, è possibile implementare IAutoRetriableTest per controllare manualmente il funzionamento della riesecuzione . InstalledInstrumentationsTest è un'implementazione di esempio di tale interfaccia.