РАЗРАБОТКА

Uber перевел 75 000 тестов с JUnit 4 на JUnit 5 — автоматизация в действии

Uber успешно мигрировал более 75 000 тестов на JUnit 5, используя автоматизацию для повышения эффективности тестирования.

✍️ Редакция iTech News | 27.04.2026 | ⏱ 2 мин | 👁 2 | Источник: InfoQ
Uber перевел 75 000 тестов с JUnit 4 на JUnit 5

Uber завершил миграцию более 75 000 тестов и свыше 1,25 миллиона строк кода с JUnit 4 на JUnit 5, используя автоматизированные инструменты трансформации кода. Это важный шаг, который позволяет улучшить масштабируемость и поддерживаемость их программного обеспечения.

Контекст миграции

JUnit 4 находился в режиме поддержки с 2021 года, в то время как JUnit 5 предлагает модульную архитектуру и улучшенные возможности тестирования. Это создаёт необходимость для долгосрочных проектов, таких как у Uber, обеспечивать совместимость с современными возможностями, чтобы не отставать от индустриальных стандартов. Продолжать использовать устаревший фреймворк ограничивало доступ к новым функциям, что и стало причиной для миграции, несмотря на сложности, связанные с масштабом инфраструктуры.

Технические детали миграции

Инженеры Uber разработали стратегию, используя инструмент OpenRewrite для ускорения процесса. Этот инструмент позволяет выполнять детерминированные трансформации кода с JUnit 4 на эквиваленты JUnit 5. Инженеры определили рецепты трансформации для обновления аннотаций и замены устаревших правил, а также адаптировали тестовые шаблоны под новые конструкции JUnit Jupiter. Дополнительно были реализованы проверки на наличие несоответствий, что обеспечивало качество переносимого кода.

Миграция была основана на итеративной модели, которая начиналась с первоначальных пробных запусков, выявляющих ошибки сборки и тестов. Каждая итерация улучшала покрытие автоматизации, позволяя обрабатывать большие объемы кода с минимальным вмешательством разработчиков. При этом использовалась внутренняя система оркестрации Shepherd для параллельного применения трансформаций.

Практическое значение для разработчиков

Миграция с JUnit 4 на JUnit 5 — важный опыт для разработчиков, работающих с крупными кодовыми базами. Это показывает, что внедрение автоматизированных решений может существенно ускорить и упростить процесс обновления устаревших систем. Аналогичные проекты для российских команд могут потребовать внедрения автоматизации для повышения продуктивности, а также обеспечения долгосрочной поддерживаемости кода.

В дальнейшем Uber планирует интегрировать OpenRewrite в Bazel для сборок Spring Boot 3 и обновление библиотек, таких как Guava, к стандартным Java API.

Поделиться: Telegram X LinkedIn