Тест может завершиться неудачей по любой причине, и иногда достаточно просто перезапустить его, чтобы он снова прошёл (из-за нестабильности, например, проблем в базовой инфраструктуре). Вы можете настроить 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
Как выглядят результаты?
По умолчанию отправители отчетов получат обобщенные результаты всех попыток.
Например: « Fail
и « Pass
для RETRY_ANY_FAILURE
приведут к общему Pass
, поскольку повторная попытка устранила сбой.
Авторы отчетов могут получать неагрегированные результаты. Для этого им необходимо расширить интерфейс ISupportGranularResults , который объявляет поддержку гранулярных (неагрегированных) результатов.
Подробности реализации
Чтобы включить автоматическое повторение попыток повторного выполнения сбоев на уровне тестового случая, реализуйте ITestFilterReceiver .
Если реализовать ITestFilterReceiver невозможно, можно реализовать IAutoRetriableTest для ручного управления работой повторного запуска. InstalledInstrumentationsTest — пример реализации этого интерфейса.