October 02-04 - Devoxx Morocco 2024 - 🇲🇦 Palm Plaza hotel - Marrakech 🌞🌴
Follow Us On

Talk details

Testcontainers libraries are a de-facto standard for integration testing in the Java community. One of the reasons for its popularity is the ecosystem of the modules -- pre-defined abstractions for creating containerized services for your tests in a single line of code.
Testcontainers modules help to integrate with new technologies, hide setup complexity behind a neat abstraction, or use in-house Docker images without using lower-level API all the time.
In this deep dive, we'll go over the architecture of a module, see how one can implement it for various technologies - databases, cloud-native sidecars, command line tools, Gen AI stack you want to have programmatic access too, and make a few small but helpful modules ourselves.
We'll look at aspects like networking, committing images programmatically, working with template databases to avoid startup costs, and learn more interesting details like how WaitStrategies are implemented and the architecture and history behind the Ryuk Resource-Reaper. 
Learning how Testcontainers can encapsulate a technology and integrate it into your Java application lifecycle will be incredibly useful. Whether your want to implement chaos engineering practices, or improve your team's productivity, creating a Testcontainers module is an excellent way to abstract away some of the complexity of your integration tests and contribute to the Java ecosystem.
Oleg Šelajev
Docker
Oleg Šelajev is a developer advocate at Docker working mainly on developer productivity, Testcontainers, improving how we set up local development environments and tests, and building applications with AI parts. Developer. Author. Speaker. Java Champion. Docker captain. 
Loves all languages.