Automatische Testwiederholung

Ein Test kann aus irgendeinem Grund fehlschlagen, und manchmal reicht es aus, den Test einfach noch einmal auszuführen, um ihn erneut zu bestehen (aufgrund von Unzulänglichkeiten, z. B. aufgrund von Problemen in der zugrunde liegenden Infrastruktur). Sie können Tradefed so konfigurieren, dass der Wiederholungsversuch automatisch durchgeführt wird.

Der Kern des automatischen Wiederholungsversuchs besteht darin, zu vermeiden, dass alle Tests erneut ausgeführt werden. Es werden nur die fehlgeschlagenen Tests erneut ausgeführt, was zu erheblichen Einsparungen bei der Ausführungszeit führt.

Tradefed unterstützt auch die mehrfache Ausführung von Tests, um über die Iterationsfunktion Flocken zu erkennen. In diesem Fall werden alle Tests erneut ausgeführt und der Test schlägt fehl, wenn eine der Iterationen fehlschlägt.

Aktivieren Sie die automatische Wiederholung

Der automatische Wiederholungsversuch wird über das RetryDecision-Objekt gesteuert, das zwei Optionen zum Aktivieren der Funktion bietet: max-testcase-run-count und retry-strategy .

max-testcase-run-count bestimmt die Anzahl der Wiederholungsversuche oder Iterationen, die versucht werden. Es legt eine Obergrenze fest, um ewige Wiederholungsversuche zu vermeiden. retry-strategy bestimmt die Entscheidung darüber, wie es erneut versucht wird. Weitere Einzelheiten finden Sie in den folgenden Abschnitten.

Deaktivieren Sie die automatische Wiederholung

Nutzen Sie die folgende Option:

--retry-strategy NO_RETRY

Fehler wiederholen

Um Testfehler erneut zu versuchen, verwenden Sie die folgenden Optionen:

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

Dadurch wird der Fehler wiederholt, bis er behoben ist oder bis die maximale Anzahl von Wiederholungsversuchen erreicht ist, je nachdem, was zuerst eintritt.

Iterationen

Um Tests mehrere Male erneut auszuführen, können die folgenden Optionen verwendet werden:

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

Wie sehen die Ergebnisse aus?

Ergebnismelder erhalten standardmäßig aggregierte Ergebnisse aller Versuche.

Beispiel: Ein Fail und ein Pass für RETRY_ANY_FAILURE führen zu einem aggregierten Pass , da der Wiederholungsversuch den Fehler beheben konnte.

Für Reporter besteht die Möglichkeit, die nicht aggregierten Ergebnisse zu erhalten. Dazu müssen sie die ISupportGranularResults-Schnittstelle erweitern, die die Unterstützung für die granularen (nicht aggregierten) Ergebnisse deklariert.

Implementierungsdetails

Implementieren Sie ITestFilterReceiver , um den automatischen Wiederholungsversuch zum erneuten Ausführen von Fehlern auf Testfallebene zu aktivieren.

Wenn Sie ITestFilterReceiver nicht implementieren können, können Sie IAutoRetriableTest implementieren, um die Funktionsweise der Wiederholung manuell zu steuern. InstalledInstrumentationsTest ist eine Beispielimplementierung dieser Schnittstelle.