4 ms·
Write a toolbox for your tests that is able to spin up and tear down an instance of the database that you use (eg. on a random port and random password). Make s
by nephton 4y ago
Write a toolbox for your tests that is able to spin up and tear down an instance of the database that you use (eg. on a random port and random password). Make sure that the new instance is really independent, especially storing its data in a separate (temporary) ditectory.
During test:
- At the start of the test (fixture), run a new DB instance
- Apply DB schema.
- possibly: Remove constraints that that would disturb your tests (eg. unimportant foreign keys)
- possibly: Add default values for columns that are not important for your test (but do with caution)
- run you test
- Assert results (maybe also directly as access to databse or via a dump of tables).
- Tear down database possibly removing all data (except error logs).
I used this pattern to test software that uses MySQL or MariaDB server. For Microsoft SQL server it may be enough to create a new database instead of running a new instance (possible but not as easy as for MySQL/MariaDB).
On CI server this can be used to run tests against all required DB server types and versions.