自動重試測試

測試可能會因任何原因失敗,有時只要重新執行測試,即可再次通過測試 (由於不穩定性,例如基礎結構中的問題)。您可以設定 Tradefed 自動執行重試。

自動重試的核心功能是避免重新執行「所有」測試;它只會重新執行失敗的測試,因此可大幅縮短執行時間。

Tradefed 也支援多次執行測試,以便透過疊代功能偵測錯誤。在這種情況下,系統會重新執行所有測試,如果任何迭代失敗,測試就會失敗。

啟用自動重試功能

自動重試功能會透過 RetryDecision 物件進行控管,後者提供兩個啟用這項功能的選項:max-testcase-run-countretry-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

結果會是什麼樣子?

根據預設,結果回報者會收到所有嘗試次數的匯總結果。

舉例來說,FailPassRETRY_ANY_FAILURE 會產生匯總 Pass,因為重試已成功清除失敗。

記者可以收到未經匯總的結果。為此,他們需要擴充 ISupportGranularResults 介面,宣告支援精細 (非匯總) 結果。

導入作業詳細資料

如要啟用自動重試功能,以便在測試案例層級重新執行失敗項目,請實作 ITestFilterReceiver

如果無法實作 ITestFilterReceiver,您可以實作 IAutoRetriableTest,手動控制重播作業方式。InstalledInstrumentationsTest 是該介面的實作範例。