測試可能因任何原因失敗,有時只需重新運行測試就足以使其再次通過(由於脆弱性,例如底層基礎設施中的問題)。您可以將 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
將導致聚合Pass
,因為重試設法清除了失敗。
報告者有可能收到非匯總結果。為此,他們需要擴展聲明支持粒度(非聚合)結果的ISupportGranularResults 接口。
實施細節
要在測試用例級別啟用自動重試以重新運行失敗,請實現ITestFilterReceiver 。
如果您無法實現 ITestFilterReceiver,您可以實現IAutoRetriableTest以手動控制重新運行的操作方式。 InstalledInstrumentationsTest是該接口的示例實現。