~/talk

How Uber Migrated 1.25M Lines from JUnit 4 to 5 with OpenRewrite

Talkat Code Remix Summit 2026 · 2026-05-11..05-13· [java]
links:none on file
links:none on file
slides:none on file

Uber migrates over 75,000 test classes and 1.25 million lines from JUnit 4 to JUnit 5 using OpenRewrite with Bazel integration, producing more than 5,000 PRs. The effort fixes Lombok and type attribution bugs in OpenRewrite, adds precondition recipes to skip non-migratable classes, writes custom recipes for external resource rules and test containers, and orchestrates campaigns with Shepherd so each PR updates source and Bazel deps, validates build and tests, and lands deterministically.

AI-written summary · about

  1. 0:00Introduction to JUnit migration
  2. 4:16Why migrate to JUnit 5
  3. 8:07Choosing OpenRewrite for migration
  4. 10:55Recipe development and fixes
  5. 19:17Recipe patterns and replacements
  6. 23:51Orchestrating build configurations
  7. 27:03Executing migration at scale
  8. 30:53Campaign results and feedback loop
  9. 33:19Key takeaways and future work
  10. 35:01Spring Boot 2 to 4 migration approach
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.