The database is an important part of our application and we have to include it in our tests.
Although we might create the database schema from our domain model for the first release of our application, a time will come when we have to change this schema, either manually or by using database scripts. At this point in time, we have to make sure that our mappings are still working correctly.
We might also want to test various strategies when writing (complex) database queries to minimize the number of database round trips, and/or to optimize the performance of a query.
When running tests that include the database, then each time we run a given test the database should be in the same state, otherwise our tests will not always ...