Автоматическая повторная попытка теста

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

Детали реализации

Чтобы включить автоматическую повторную попытку к неудачам Rerun на уровне тестового примера реализация ITestFilterReceiver .

Если вы не можете реализовать ITestFilterReceiver, вы можете реализовать IAutoRetriableTest вручную контролировать , как работает перезапуск. InstalledInstrumentationsTest является примером реализации этого интерфейса.