Un test potrebbe non riuscire per qualsiasi motivo e a volte può essere sufficiente ripeterlo abbastanza da farla passare di nuovo (a causa di irregolarità, ad esempio a causa di problemi nella l'infrastruttura sottostante). 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 instabilità tramite la funzionalità 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.
Abilita nuovo tentativo automatico
Il nuovo tentativo automatico è controllato tramite
Oggetto SubmitDecision
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
tentativi. 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 non riusciti
Per riprovare gli errori di test, utilizza le seguenti opzioni:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Verrà eseguito un nuovo tentativo di errore finché non viene superato o fino al numero massimo di nuovi tentativi. a seconda dell'evento che si verifica per primo.
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 reporter dei risultati riceveranno i risultati aggregati di tutti i tentativi.
Ad esempio, Fail
e Pass
per RETRY_ANY_FAILURE
generano un
Pass
aggregato perché il nuovo tentativo è riuscito a cancellare l'errore.
I reporter possono ricevere i risultati non aggregati. Per farlo, è necessario estendere Interfaccia ISupportGranularResults che dichiara il supporto dei risultati granulari (non aggregati).
Dettagli di 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 TestIAutoRetriable per controllare manualmente la modalità di ripetizione. InstallInstrumentationsTest un esempio di implementazione dell'interfaccia.