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

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