Nuovo tentativo automatico del test

Un test potrebbe non riuscire per qualsiasi motivo e a volte è sufficiente eseguirlo di nuovo per superarlo (a causa di instabilità, ad esempio problemi nell'infrastruttura sottostante). Puoi configurare Tradefed in modo che esegua automaticamente il nuovo tentativo.

Lo scopo principale del nuovo tentativo automatico è evitare di eseguire di nuovo tutti i test. Vengono eseguiti di nuovo solo i test non riusciti, con un notevole risparmio di tempo di esecuzione.

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

Abilita 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 tentativi o iterazioni che verranno eseguiti. Imposta un limite superiore per evitare di riprovare all'infinito. retry-strategy determina la modalità di riprova. Per maggiori dettagli, consulta le sezioni seguenti.

Disattivare il nuovo tentativo automatico

Utilizza la seguente opzione:

--retry-strategy NO_RETRY

Riprova gli errori

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

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

Verrà riprovato fino a quando non andrà a buon fine o fino al raggiungimento del numero massimo di tentativi, a seconda di quale condizione si verifica prima.

Iterazioni

Per eseguire nuovamente i test un determinato numero di volte, puoi utilizzare le seguenti opzioni:

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

Come appaiono i risultati?

Per impostazione predefinita, i reporter dei risultati riceveranno i risultati aggregati di tutti i tentativi.

Ad esempio: un Fail e un Pass per RETRY_ANY_FAILURE genereranno un Pass aggregato, poiché il nuovo tentativo è riuscito a risolvere 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 di implementazione

Per attivare il nuovo tentativo automatico per ripetere gli errori a livello di scenario di test, implementa ITestFilterReceiver.

Se non riesci a implementare ITestFilterReceiver, puoi implementare IAutoRetriableTest per controllare manualmente il funzionamento del nuovo tentativo. InstalledInstrumentationsTest è un'implementazione di esempio di questa interfaccia.