Un test peut échouer pour quelque raison que ce soit, et il suffit parfois de le réexécuter pour la faire repasser (en raison, par exemple, de problèmes au niveau infrastructure sous-jacente). Vous pouvez configurer Tradefed automatiquement.
Le principe de la nouvelle tentative automatique consiste à éviter de réexécuter tous les tests. s'exécute de nouveau les tests ayant échoué, ce qui permet de réduire considérablement le temps d'exécution.
Tradefed permet aussi d'exécuter des tests plusieurs fois afin de détecter des failles via la fonctionnalité d'itérations. Dans ce cas, tous les tests seront à nouveau, et le test échouera si l'une des itérations échoue.
Activer la nouvelle tentative automatique
La nouvelle tentative automatique est contrôlée
Objet RetryDecision
qui offre deux options pour activer la fonctionnalité: max-testcase-run-count
et retry-strategy
.
max-testcase-run-count
génère le nombre de tentatives ou d'itérations
être tentée. Elle définit une limite supérieure pour éviter de réessayer indéfiniment.
retry-strategy
oriente la décision sur la manière de réessayer ; consultez les sections suivantes
pour en savoir plus.
Désactiver la nouvelle tentative automatique
Utilisez l'option suivante:
--retry-strategy NO_RETRY
Nouvelles tentatives en cas d'échec
Pour relancer les tests, utilisez les options suivantes:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
L'échec sera répété jusqu'à ce qu'il soit terminé ou que le nombre maximal de tentatives soit atteint. est atteinte, selon la première échéance atteinte.
Itérations
Pour réexécuter des tests pendant un certain nombre de fois, vous pouvez utiliser les options suivantes:
--retry-strategy ITERATIONS --max-testcase-run-count X
Comment les résultats s'affichent-ils ?
Par défaut, les rapports de résultats reçoivent les résultats agrégés de toutes les tentatives.
Par exemple, Fail
et Pass
pour RETRY_ANY_FAILURE
génèrent une
Pass
agrégée, car la nouvelle tentative a permis d'effacer l'échec.
Les reporters peuvent recevoir des résultats non agrégés. Pour ce faire, elles doivent étendre Interface ISupportGranularResults qui déclare la prise en charge des résultats précis (non agrégés).
Détails de l'implémentation
Pour activer la réexécution automatique des échecs au niveau du scénario de test, implémentez ITestFilterReceiver :
Si vous ne pouvez pas implémenter ITestFilterReceiver, vous pouvez implémenter IAutoRetriableTest pour contrôler manuellement le fonctionnement de la réexécution. InstallerInstrumentationsTest est un exemple d'implémentation de cette interface.