自动测试重试

测试可能会因任何原因而失败,有时只需重新运行测试就足以使其再次通过(由于不稳定性,例如来自底层基础架构的问题)。您可以将 Tradefed 配置为自动执行重试。

自动重试的核心是避免重新运行所有测试;它仅重新运行失败的测试,从而大大节省了执行时间。

Tradefed 还支持多次运行测试,以便通过 iterations 功能检测不稳定性。在这种情况下,所有测试都将重新运行,如果任何迭代失败,则测试将失败。

启用自动重试

自动重试通过 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

结果看起来如何?

默认情况下,结果报告器将接收所有尝试的聚合结果。

例如:FailPass 用于 RETRY_ANY_FAILURE 将导致聚合的 Pass,因为重试成功清除了失败。

报告器可以接收非聚合结果。为此,他们需要扩展 ISupportGranularResults 接口,该接口声明支持粒度(非聚合)结果。

实现细节

要启用自动重试以在测试用例级别重新运行失败,请实现 ITestFilterReceiver

如果您无法实现 ITestFilterReceiver,则可以实现 IAutoRetriableTest 以手动控制重新运行的操作方式。InstalledInstrumentationsTest 是该接口的示例实现。