Nuovo tentativo automatico del test

Un test potrebbe non riuscire per qualsiasi motivo e, a volte, è sufficiente eseguirlo di nuovo per farlo passare di nuovo (a causa di problemi di instabilità, ad esempio problemi nell'infrastruttura di base). Puoi configurare Tradefed per eseguire il nuovo tentativo automaticamente.

Lo scopo del nuovo tentativo automatico è evitare di eseguire nuovamente tutti i test. esegue nuovamente solo per i test non riusciti, con un conseguente risparmio sui tempi di esecuzione.

Tradefed supporta anche l'esecuzione di test più volte per rilevare la variabilità tramite la funzionalità di iterazioni. In questo caso, tutti i test verranno una nuova esecuzione e il test non andrà a buon fine se una delle iterazioni non va a buon fine.

Attivare il nuovo tentativo automatico

Il nuovo tentativo automatico viene controllato tramite l'oggetto RetryDecision, che offre due opzioni per attivare la funzionalità: max-testcase-run-count e retry-strategy.

max-testcase-run-count determina il numero di nuovi tentativi o iterazioni che verranno eseguiti. Imposta un limite superiore per evitare nuovi tentativi all'infinito. retry-strategy determina come riprovare. consulta le sezioni seguenti per ulteriori informazioni.

Disattiva nuovo tentativo automatico

Utilizza la seguente opzione:

--retry-strategy NO_RETRY

Nuovi tentativi in caso di errori

Per riprovare a eseguire i test non riusciti, utilizza le seguenti opzioni:

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

Il fallimento verrà riprovato finché non viene superato o finché non viene raggiunto il numero massimo di tentativi, a seconda di quale condizione si verifica per prima.

Iterazioni

Per eseguire nuovamente i test per un certo periodo di tempo, possono essere utilizzate le seguenti opzioni:

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

Che aspetto hanno i risultati?

Per impostazione predefinita, i report sui risultati riceveranno i risultati aggregati di tutti i tentativi.

Ad esempio, un Fail e un Pass per RETRY_ANY_FAILURE daranno un Pass aggregato poiché il nuovo tentativo è riuscito a correggere l'errore.

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

Dettagli sull'implementazione

Per abilitare il nuovo tentativo automatico di eseguire nuovamente gli errori a livello di scenario di test, implementa ITestFilterReceiver.

Se non riesci a implementare ITestFilterReceiver, puoi implementare IAutoRetriableTest per controllare manualmente il funzionamento della riesecuzione. InstallInstrumentationsTest un esempio di implementazione dell'interfaccia.