Nouvelle tentative de test automatique

Un test peut échouer pour une raison quelconque, et parfois, il suffit de réexécuter le test pour le faire réussir à nouveau (en raison de problèmes, tels que des problèmes dans l'infrastructure sous-jacente). Vous pouvez configurer Tradefed pour effectuer la nouvelle tentative automatiquement.

Le cœur de la relance automatique est d'éviter de réexécuter tous les tests ; il ne réexécute que les tests ayant échoué, ce qui permet de réaliser d'importantes économies de temps d'exécution.

Tradefed prend également en charge l'exécution de tests plusieurs fois afin de détecter les irrégularités via la fonction d' itérations . Dans ce cas, tous les tests seront réexécutés et le test échouera si l'une des itérations échoue.

Activation de la fonctionnalité

La nouvelle tentative automatique est contrôlée via l' objet RetryDecision qui fournit deux options pour activer la fonctionnalité : max-testcase-run-count et retry-strategy .

max-testcase-run-count le nombre de tentatives ou d'itérations qui seront tentées. Il définit une limite supérieure pour éviter de réessayer indéfiniment. retry-strategy de nouvelle tentative détermine la manière de réessayer ; voir les sections suivantes pour plus de détails.

Désactivation

Utilisez l'option suivante :

--retry-strategy NO_RETRY

Échecs de nouvelle tentative

Pour réessayer les échecs de test, utilisez les options suivantes :

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

Cela réessayera l'échec jusqu'à ce qu'il passe ou jusqu'à ce que le nombre maximum de tentatives soit atteint, selon la première éventualité.

Itérations

Pour relancer les tests plusieurs fois, les options suivantes peuvent être utilisées :

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

À quoi ressemblent les résultats ?

Les rapporteurs de résultats recevront par défaut les résultats agrégés de toutes les tentatives.

Par exemple : un Fail et une RETRY_ANY_FAILURE Pass une réussite Pass puisque la nouvelle tentative a réussi à effacer l'échec.

Il est possible pour les reporters de recevoir les résultats non agrégés. Pour ce faire, ils doivent étendre l' interface ISupportGranularResults qui déclare la prise en charge des résultats granulaires (non agrégés).

Détails d'implémentation

Pour activer la nouvelle tentative automatique afin de réexécuter les é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. InstalledInstrumentationsTest est un exemple d'implémentation de cette interface.