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.