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 in modo che esegua il nuovo tentativo automaticamente.

L'obiettivo principale del nuovo approccio è evitare di eseguire nuovamente tutti i test, ma solo quelli non riusciti, con un notevole risparmio in termini di tempo 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 eseguiti nuovamente 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 di riprovare all'infinito. retry-strategy determina la decisione su come riprovare. Per ulteriori dettagli, consulta le sezioni seguenti.

Disattivare il 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 determinato numero di volte, puoi utilizzare le seguenti opzioni:

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

Quali sono 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 unPass 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 consentire al nuovo tentativo automatico di ripetere gli errori a livello di test case, implementa ITestFilterReceiver.

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