Test może zakończyć się niepowodzeniem z dowolnego powodu, a czasami po prostu ponowne uruchomienie testu wystarczy, aby przejść ponownie (z powodu niestabilności, na przykład z powodu problemów z podstawową infrastrukturą). Możesz skonfigurować Tradefed, aby automatycznie przeprowadzać ponowną próbę.
Sednem automatycznego ponawiania próby jest uniknięcie ponownego uruchomienia wszystkich testów; ponownie uruchamia tylko nieudane testy, co skutkuje dużą oszczędnością czasu wykonania.
Tradefed obsługuje również wielokrotne uruchamianie testów w celu wykrycia złuszczania za pomocą funkcji iteracji . W takim przypadku wszystkie testy zostaną ponownie uruchomione, a test zakończy się niepowodzeniem, jeśli którakolwiek z iteracji zakończy się niepowodzeniem.
Włączanie funkcji
Automatyczne ponawianie próby jest kontrolowane za pomocą obiektu RetryDecision, który udostępnia dwie opcje włączenia tej funkcji: max-testcase-run-count
i retry-strategy
.
max-testcase-run-count
steruje liczbą ponownych prób lub iteracji, które zostaną podjęte. Ustawia górną granicę, aby uniknąć ponownego próbowania w nieskończoność. retry-strategy
o tym, jak ponowić próbę; zobacz kolejne sekcje, aby uzyskać więcej informacji.
Wyłączanie
Użyj następującej opcji:
--retry-strategy NO_RETRY
Ponawianie niepowodzeń
Aby ponowić próbę niepowodzenia testu, użyj następujących opcji:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Spowoduje to ponowną próbę niepowodzenia, dopóki nie minie lub zostanie osiągnięta maksymalna liczba ponownych prób, w zależności od tego, co nastąpi wcześniej.
Iteracje
Aby ponownie uruchomić testy przez pewien czas, można użyć następujących opcji:
--retry-strategy ITERATIONS --max-testcase-run-count X
Jak wyglądają wyniki?
Osoby zgłaszające wyniki domyślnie otrzymają zagregowane wyniki wszystkich prób.
Na przykład: Fail
i pomyślny wynik dla RETRY_ANY_FAILURE
spowodują zagregowany Pass
Pass
ponieważ ponowna próba usunęła awarię.
Reporterzy mogą otrzymać wyniki niezagregowane. Aby to zrobić, muszą rozszerzyć interfejs ISupportGranularResults, który deklaruje obsługę szczegółowych (niezagregowanych) wyników.
Szczegóły dotyczące wdrożenia
Aby włączyć automatyczne ponawianie prób w celu ponownego uruchomienia błędów na poziomie przypadku testowego, zaimplementuj ITestFilterReceiver .
Jeśli nie możesz zaimplementować ITestFilterReceiver, możesz zaimplementować IAutoRetriableTest , aby ręcznie kontrolować sposób działania ponownego uruchamiania. InstalledInstrumentationsTest to przykładowa implementacja tego interfejsu.