Автоматический повтор теста

Тест может завершиться неудачей по любой причине, и иногда достаточно просто перезапустить его, чтобы он снова прошёл (из-за нестабильности, например, проблем в базовой инфраструктуре). Вы можете настроить 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 — пример реализации этого интерфейса.