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 lab, 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 you want to have programmatic access too, and make a few small but helpful modules ourselves.
Learning how Testcontainers can encapsulate a technology and integrate it into your Spring 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.