Riprova test automatico

Un test potrebbe fallire per qualsiasi motivo e, a volte, è sufficiente rieseguire il test per farlo passare di nuovo (a causa di problemi, ad esempio a causa di problemi nell'infrastruttura sottostante). Puoi configurare Tradefed per eseguire il nuovo tentativo automaticamente.

Il nucleo di auto-retry è evitare rieseguire tutte le prove; riesegue solo i test falliti, con conseguente notevole risparmio di tempo di esecuzione.

Tradefed supporta inoltre l'esecuzione di test più volte al fine di individuare flakiness tramite le iterazioni sono dotate. In questo caso, tutti i test verranno rieseguiti e il test avrà esito negativo se una delle iterazioni fallisce.

Abilitazione della funzione

La ripetizione automatica è controllato tramite l' oggetto RetryDecision che prevede due opzioni per abilitare la funzione: max-testcase-run-count e retry-strategy .

max-testcase-run-count unità il numero di tentativi o iterazioni che verranno tentate. Imposta un limite superiore per evitare di riprovare all'infinito. retry-strategy unità la decisione di come riprovare; vedere le sezioni seguenti per maggiori dettagli.

Disabilitazione

Usa la seguente opzione:

--retry-strategy NO_RETRY

Riprovare gli errori

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

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

Questo riproverà l'errore finché non viene superato o finché 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.

Per esempio: un Fail e un Pass per RETRY_ANY_FAILURE si tradurrà in un aggregato Pass dal momento che il nuovo tentativo è riuscito a cancellare il fallimento.

È possibile per i giornalisti ricevere i risultati non aggregati. Per farlo, hanno bisogno di estendere le ISupportGranularResults un'interfaccia che dichiara il supporto per i granulari risultati (non aggregati).

Dettagli di implementazione

Per abilitare l'auto-retry a guasti ripetuta a livello di test case, implementare ITestFilterReceiver .

Se non è possibile implementare ITestFilterReceiver, è possibile implementare IAutoRetriableTest controllare manualmente come replica funziona. InstalledInstrumentationsTest è un esempio di implementazione di tale interfaccia.