Using TestContainers for Spring Boot integration tests
It was the evening of the French-German football game for the European Championship and while watching the game using one eye, I had the time to figure out how to create an integration tests using two Spring Boot connected components.
Setup
The setup of the Spring Boot components is quite simple. There are two Spring Boot components; module1 and module2. Module1 forwards a request to module2.
http client (like curl)-> module1 -> module2
Integration test
In the integration test we want to load both container module1 and module2. The integration test calls module1 and verifies the answer.
Integration test -> module1 -> module2
The project testcontainers has a module it, which contains the integration test.
First, we need Testcontainers to be in the pom file (in short)
To load all the docker containers and have them connected, Docker compose is our friend. The docker compose file is very straightforward.
And finally, there is the integration test
The test is quite simple, first a compose environment is defined. The withExposedService methods will make sure that Testcontainers will wait until both services are up and ready.
Next, the compose set is started and finally the real test is run.
As you see, starting a set of Spring Boot micro services can be started simple using Testcontainers and Docker Compose to run a fine integration test.
Happy coding!