Ein Test kann aus verschiedenen Gründen fehlschlagen. Manchmal reicht es aus, den Test einfach noch einmal auszuführen, damit er wieder bestanden wird (aufgrund von Instabilität, z. B. durch Probleme in der zugrunde liegenden Infrastruktur). Sie können Tradefed so konfigurieren, dass die Wiederholung automatisch erfolgt.
Der Kern der automatischen Wiederholung besteht darin, nicht alle Tests noch einmal auszuführen. Es werden nur die fehlgeschlagenen Tests noch einmal ausgeführt, was zu erheblichen Einsparungen bei der Ausführungszeit führt.
Tradefed unterstützt auch die mehrmalige Ausführung von Tests, um Instabilität über die Funktion iterations (Wiederholungen) zu erkennen. In diesem Fall werden alle Tests noch einmal ausgeführt. Der Test schlägt fehl, wenn eine der Wiederholungen fehlschlägt.
Automatische Wiederholung aktivieren
Die automatische Wiederholung 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 Wiederholungen oder Wiederholungen, die versucht werden. Es wird eine Obergrenze festgelegt, um zu verhindern, dass die Wiederholung unendlich oft versucht wird.
retry-strategy bestimmt, wie die Wiederholung erfolgen soll. Weitere Informationen finden Sie in den folgenden Abschnitten.
Automatische Wiederholung deaktivieren
Verwenden Sie die folgende Option:
--retry-strategy NO_RETRY
Fehler wiederholen
Verwenden Sie die folgenden Optionen, um Testfehler zu wiederholen:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Der Fehler wird so lange wiederholt, bis er behoben ist oder die maximale Anzahl von Wiederholungen erreicht wurde, je nachdem, was zuerst eintritt.
Wiederholungen
Verwenden Sie die folgenden Optionen, um Tests mehrmals auszuführen:
--retry-strategy ITERATIONS --max-testcase-run-count X
Wie sehen die Ergebnisse aus?
Ergebnisreporter 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 durch die Wiederholung behoben werden konnte.
Reporter können auch die nicht aggregierten Ergebnisse erhalten. Dazu müssen sie die Schnittstelle ISupportGranularResults erweitern, die die Unterstützung für die detaillierten (nicht aggregierten) Ergebnisse deklariert.
Details zur Implementierung
Implementieren Sie ITestFilterReceiver, um die automatische Wiederholung zu aktivieren, damit Fehler auf Testfallebene noch einmal ausgeführt werden.
Wenn Sie ITestFilterReceiver nicht implementieren können, können Sie IAutoRetriableTest implementieren, um manuell zu steuern, wie die Wiederholung funktioniert. InstalledInstrumentationsTest ist eine Beispielimplementierung dieser Schnittstelle.