Automatyczne ponawianie testu

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.