Nuovo tentativo di test automatico

Un test potrebbe fallire per qualsiasi motivo e talvolta è sufficiente eseguirlo nuovamente per farlo passare di nuovo (a causa di instabilità, ad esempio a causa di problemi nell'infrastruttura sottostante). È possibile configurare Tradefed per eseguire automaticamente il nuovo tentativo.

Lo scopo principale del tentativo automatico è evitare di rieseguire tutti i test; riesegue solo i test falliti, con conseguente notevole risparmio di tempo di esecuzione.

Tradefed supporta inoltre l'esecuzione di test più volte per rilevare instabilità tramite la funzionalità di iterazione . In questo caso, tutti i test verranno rieseguiti e il test fallirà se una qualsiasi delle iterazioni fallisce.

Abilita il nuovo tentativo automatico

Il nuovo tentativo automatico è controllato tramite l' oggetto RetryDecision che fornisce due opzioni per abilitare la funzionalità: max-testcase-run-count e retry-strategy .

max-testcase-run-count determina il numero di tentativi o iterazioni che verranno tentati. Imposta un limite superiore per evitare di riprovare all'infinito. retry-strategy guida la decisione su come riprovare; vedere le sezioni seguenti per maggiori dettagli.

Disabilita il nuovo tentativo automatico

Utilizza la seguente opzione:

--retry-strategy NO_RETRY

Riprovare gli errori

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

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

Questo riproverà l'errore finché non verrà superato o finché non verrà raggiunto il numero massimo di tentativi, a seconda di quale evento si verifica per primo.

Iterazioni

Per rieseguire i test per un certo numero di volte, è possibile utilizzare le seguenti opzioni:

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

Come sono i risultati?

I reporter dei risultati per impostazione predefinita riceveranno i risultati aggregati di tutti i tentativi.

Ad esempio: un Fail e un Pass per RETRY_ANY_FAILURE risulteranno in un Pass aggregato poiché il nuovo tentativo è riuscito a cancellare l'errore.

È possibile che i giornalisti ricevano i risultati non aggregati. A tale scopo, devono estendere l' interfaccia ISupportGranularResults che dichiara il supporto per i risultati granulari (non aggregati).

Dettagli di implementazione

Per abilitare il nuovo tentativo automatico per rieseguire gli errori a livello di test case, implementare ITestFilterReceiver .

Se non è possibile implementare ITestFilterReceiver, è possibile implementare IAutoRetriableTest per controllare manualmente il funzionamento della riesecuzione. InstalledInstrumentationsTest è un esempio di implementazione di tale interfaccia.