自動重試

測試可能因任何原因失敗,有時只需重新運行測試就足以使其再次通過(由於脆弱性,例如底層基礎設施中的問題)。您可以將 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是該接口的示例實現。