I am using Selenium GUI tests in a Java Web Application. Since these tests are actually client, how can we rollback database after running a test?
Rollback Database after running Selenium GUI tests
2.5k Views Asked by jd466 AtThere are 4 best solutions below

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

Thank you for your suggestions. I decided to use mysqldump for this purpose. Within Ant, Backup and restore the test-database before and after each batch-test.

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
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
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: