測試可能會因任何原因而失敗,有時只要重新執行測試,就可能再次通過 (因為不穩定,例如基礎架構發生問題)。您可以將 Tradefed 設為自動重試。
自動重試的核心功能是避免重新執行所有測試,只會重新執行失敗的測試,因此可大幅節省執行時間。
Tradefed 也支援多次執行測試,以便透過「疊代」功能偵測不穩定性。在這種情況下,所有測試都會重新執行,如果任何疊代失敗,測試就會失敗。
啟用自動重試功能
自動重試功能是透過 RetryDecision 物件控管,該物件提供 max-testcase-run-count
和 retry-strategy
兩種選項來啟用這項功能。
max-testcase-run-count
會決定嘗試重試或疊代的次數。這項設定會設下上限,避免無限次重試。retry-strategy
會決定如何重試,詳情請參閱下列章節。
停用自動重試功能
請使用下列選項:
--retry-strategy NO_RETRY
重試失敗的作業
如要重試測試失敗的項目,請使用下列選項:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
系統會重試失敗的作業,直到作業通過或達到重試次數上限為止 (兩者取其先)。
疊代
如要重複執行測試多次,可以使用下列選項:
--retry-strategy ITERATIONS --max-testcase-run-count X
結果會是什麼樣子?
根據預設,結果回報者會收到所有嘗試的匯總結果。
舉例來說,如果 RETRY_ANY_FAILURE
的 Fail
和 Pass
適用於 RETRY_ANY_FAILURE
,則會產生匯總的 Pass
,因為重試已成功清除失敗。
記者可能會收到未匯總的結果。如要這麼做,他們需要擴充ISupportGranularResults 介面,聲明支援精細 (非匯總) 結果。
導入作業詳細資料
如要啟用自動重試功能,在測試案例層級重新執行失敗的測試,請實作 ITestFilterReceiver。
如果無法實作 ITestFilterReceiver,可以實作 IAutoRetriableTest,手動控制重新執行作業。InstalledInstrumentationsTest 是該介面的實作範例。