自動測試重試

測試可能因任何原因失敗,有時只需重新執行測試就足以使其再次通過(由於不穩定,例如底層基礎設施中的問題)。您可以將 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

結果如何?

預設情況下,結果報告者將收到所有嘗試的總計結果。

例如: RETRY_ANY_FAILUREFailPass將導致聚合Pass ,因為重試成功清除了失敗。

記者有可能收到非匯總結果。為此,他們需要擴展ISupportGranularResults 接口,該接口聲明對粒度(非聚合)結果的支援。

實施細節

若要啟用自動重試以在測試案例層級重新執行失敗,請實作ITestFilterReceiver

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