The purpose of this repository is to demonstrate the implementation of a fully automated integration test using Cucumber + Testcontainers.
The sample application is a message driven insurance claim review process.
Run this command to build and run all automated tests
mvn clean install
If you would like to run the integration test only, then run this command
mvn -Dtest=CucumberTest test
Prior to the test execution, Testcontainers are to be initialized and started. Next, the hostname and port of the containers are injected into the Spring Boot application context so that the application can be started with connectivity to the containers. Finally, run the test scenarios based on cucumber feature files.
The diagram below depicts the initialization process using classes which are highlighted in pink.
There is a layer to abstract away operations of MongoDB and RabbitMQ in order to make test steps simple and easy to understand.
For data sharing among steps, we keep data in test data context. For example, step 3 is able to obtain the claim review update from test data context and verify the field values as the listener puts the data into the context once the application has submitted it to the topic exchange.