Automatyczne ponawianie testu

Test może zakończyć się niepowodzeniem z dowolnego powodu, a czasami wystarczy po prostu ponowne uruchomienie testu, aby ponownie go zaliczyć (z powodu niestabilności, na przykład spowodowanej problemami w podstawowej infrastrukturze). Możesz skonfigurować Tradefed tak, aby ponawianie próby odbywało się automatycznie.

Istotą automatycznego ponawiania prób jest uniknięcie ponownego uruchamiania wszystkich testów; ponownie uruchamia tylko te, które zakończyły się niepowodzeniem, co skutkuje dużą oszczędnością czasu wykonania.

Tradefed obsługuje także wielokrotne przeprowadzanie testów w celu wykrycia niestabilności za pomocą funkcji iteracji . W takim przypadku wszystkie testy zostaną przeprowadzone ponownie, a jeśli którakolwiek z iteracji zakończy się niepowodzeniem, test zakończy się niepowodzeniem.

Włącz automatyczne ponawianie prób

Automatyczne ponawianie prób jest kontrolowane za pośrednictwem obiektu RetryDecision , który udostępnia dwie opcje włączenia tej funkcji: max-testcase-run-count i retry-strategy .

max-testcase-run-count określa liczbę ponownych prób lub iteracji, które zostaną podjęte. Ustawia górną granicę, aby uniknąć ponawiania prób w nieskończoność. retry-strategy decyduje o tym, jak ponowić próbę; więcej szczegółów znajdziesz w poniższych sekcjach.

Wyłącz automatyczne ponawianie prób

Użyj następującej opcji:

--retry-strategy NO_RETRY

Ponowne próby nie powiodły się

Aby ponowić próbę niepowodzenia testu, użyj następujących opcji:

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

Spowoduje to ponawianie niepowodzeń do momentu ich zaliczenia lub osiągnięcia maksymalnej liczby ponownych prób, w zależności od tego, co nastąpi wcześniej.

Iteracje

Aby ponownie uruchamiać testy przez określony czas, można skorzystać z następujących opcji:

--retry-strategy ITERATIONS --max-testcase-run-count X

Jak wyglądają wyniki?

Reporterzy wyników domyślnie otrzymają zagregowane wyniki wszystkich prób.

Na przykład: Fail i Pass dla RETRY_ANY_FAILURE spowodują zagregowane Pass , ponieważ ponowna próba usunie 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 uruchomienia. InstalledInstrumentationsTest jest przykładową implementacją tego interfejsu.