Automatyczne ponawianie testu

Test może zakończyć się niepowodzeniem z dowolnego powodu, a czasami wystarczy go ponownie uruchomić, aby uzyskać pozytywny wynik (z powodu niepewności, np. problemów z podstawową infrastrukturą). Możesz skonfigurować Tradefed, aby przeprowadzić ponowną próbę automatycznie.

Głównym celem automatycznego powtarzania jest unikanie ponownego uruchamiania wszystkich testów. Powtarzane są tylko testy, które się nie powiodły, co znacznie skraca czas wykonywania.

Tradefed obsługuje też wielokrotne uruchamianie testów w celu wykrywania niespójności za pomocą funkcji iteracji. W takim przypadku wszystkie testy zostaną ponownie uruchomione, a jeśli którakolwiek z itacji zakończy się niepowodzeniem, test zakończy się niepowodzeniem.

Włącz automatyczne ponowne próby

Automatyczne ponowne próby są kontrolowane za pomocą obiektu RetryDecision, który udostępnia 2 opcje włączenia tej funkcji: max-testcase-run-count i retry-strategy.

max-testcase-run-count zwiększa liczbę ponownych prób lub iteracji, które które można podjąć. Określa górną granicę, która zapobiega ponawianiu prób w nieskończoność. retry-strategy określa sposób ponownego próbowania; więcej informacji znajdziesz w następnych sekcjach.

Wyłącz automatyczne ponawianie próby

Użyj tej opcji:

--retry-strategy NO_RETRY

Nieudane ponowienia

Aby ponownie wykonać testy, które zakończyły się niepowodzeniem, użyj tych opcji:

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

Spowoduje to ponowne próby wykonania operacji, aż do jej powodzenia lub osiągnięcia maksymalnej liczby prób, w zależności od tego, co nastąpi wcześniej.

Iteracje

Aby przeprowadzać testy ponownie przez pewien czas, możesz skorzystać z tych opcji:

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

Jak wyglądają wyniki?

Osoby zgłaszające wyniki domyślnie otrzymają zbiorcze wyniki wszystkich prób.

Na przykład: Fail i Pass dla RETRY_ANY_FAILURE dadzą wartość zagregowane Pass od czasu ponownej próby usunięcia błędu.

Raportujący mogą otrzymywać wyniki nieskumulowane. Aby to zrobić, muszą rozszerzyć interfejs ISupportGranularResults, który deklaruje obsługę szczegółowych (niezbiorczych) wyników.

Szczegóły implementacji

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ć interfejsu ITestFilterReceiver, możesz zaimplementować interfejs IAutoRetriableTest, aby ręcznie kontrolować sposób ponownego uruchamiania. InstalledInstrumentationsTest to przykładowa implementacja tego interfejsu.