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