Rollback Database after running Selenium GUI tests
What you're after is called Fixture Teardown Patterns. Since you need to keep track of all resources that are created in a test and automatically destroy/free them during Teardown. I obviously don't know your framework, but for this case
rollback database after running a test
a good candidate is the Inline Teardown. It includes teardown logic at the end of the Test Method immediately after the result verification. Like so:
My guess is that you can't 'roll back' the database since web applications typically commit transactions between requests.
You'll need to implement your own custom rollback. Perhaps you could create a new user for each test and remove any changes made by this user after the test. Or maybe you want to implement the command pattern.
You might also find a cascading delete helpful
Lately I attended a talk about docker. The speaker was creating a docker container with a mysql database for demonstration purposes. I was immediately thinking about how to use this for integration testing as you can create a clean database instance with very little effort.
I was searching if there are already some best practices and found those to websites
- TestContainers - pay attention to the Temporary database containers link
- Tutorial – Docker, JPA and Testing - a complete example
I´m in the phase of evaluating on how to integrate this but I´m confident this is what I (and hopefully you) was looking for.Workflow would be:
- Test execution
- Start docker container from image with empty
- Fill database with master data (if necessary)
- Run test
- Throw docker container away