Ein Test kann aus verschiedenen Gründen fehlschlagen. Manchmal reicht es aus, den Test noch einmal auszuführen, damit er erfolgreich ist (z. B. aufgrund von Problemen in der zugrunde liegenden Infrastruktur). Sie können Tradefed so konfigurieren, dass der Wiederholungsversuch automatisch durchgeführt wird.
Der Hauptzweck der automatischen Wiederholung besteht darin, zu vermeiden, dass alle Tests noch einmal ausgeführt werden. Stattdessen werden nur die fehlgeschlagenen Tests noch einmal ausgeführt, was zu einer erheblichen Zeitersparnis bei der Ausführung führt.
Tradefed unterstützt auch die mehrmalige Ausführung von Tests, um Instabilitäten über die Funktion Iterationen zu erkennen. In diesem Fall werden alle Tests noch einmal ausgeführt und der Test schlägt fehl, wenn eine der Iterationen fehlschlägt.
Automatische Wiederholung aktivieren
Die automatische Wiederholung wird über das RetryDecision-Objekt gesteuert. Es bietet zwei Optionen zum Aktivieren der Funktion: max-testcase-run-count
und retry-strategy
.
max-testcase-run-count
bestimmt die Anzahl der Wiederholungen oder Iterationen, die versucht werden. Es wird eine Obergrenze festgelegt, um endlose Wiederholungen zu vermeiden.
retry-strategy
bestimmt, wie der Vorgang wiederholt wird. Weitere Informationen finden Sie in den folgenden Abschnitten.
Automatische Wiederholung deaktivieren
Verwenden Sie die folgende Option:
--retry-strategy NO_RETRY
Fehlgeschlagene Versuche wiederholen
Sie haben folgende Möglichkeiten, fehlgeschlagene Tests noch einmal auszuführen:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Der Vorgang wird wiederholt, bis der Fehler nicht mehr auftritt oder die maximale Anzahl von Wiederholungen erreicht ist, je nachdem, was zuerst eintritt.
Iterationen
Für die wiederholte Ausführung von Tests stehen folgende Optionen zur Verfügung:
--retry-strategy ITERATIONS --max-testcase-run-count X
Wie sehen die Ergebnisse aus?
Nutzer, die Ergebnisse melden, 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 Fehler beim erneuten Versuch behoben werden konnte.
Es ist möglich, dass Redakteure die nicht zusammengefassten Ergebnisse erhalten. Dazu müssen sie die ISupportGranularResults-Schnittstelle erweitern, die die Unterstützung der detaillierten (nicht zusammengefassten) Ergebnisse angibt.
Implementierungsdetails
Wenn Sie die automatische Wiederholung aktivieren möchten, um Fehler auf Testfallebene noch einmal auszuführen, implementieren Sie ITestFilterReceiver.
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.