Automatyczne ponawianie testu

Test może się nie powieść z dowolnego powodu, a czasami wystarczy ponowne uruchomienie testu, aby przejść ponownie (z powodu niestabilności, na przykład z powodu problemów z podstawową infrastrukturą). Możesz skonfigurować Tradefed tak, aby ponowna próba była przeprowadzana automatycznie.

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ślna próba dla RETRY_ANY_FAILURE spowodują zagregowany Pass Pass ponieważ ponowna próba zdołała usunąć błąd.

Reporterzy mogą otrzymać niezagregowane wyniki. 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.