Can anyone recommend a good framework (preferably open source) that can
be used for database testing ?
The thing I want to be able to do is the following:
(1) Define the expected database changes that I want my following code
to trigger
(2) Take a snapshow of the database before my test code starts
(3) Execute my code being tested
(4) Verify that all the changes have been done to the database
In other words, I am looking for a component that can be used in a
similar way as some mock object frameworks where you record the
expected methods that should be invoked by your code, but instead I
want to record the expected database changes that will be triggered by
my code.
To further explain what I mean, here is a code sample of the kind of
feature I would wish:
string connectionString = "...";
DatabaseTester oDatabaseTester = new DatabaseTester(connectionString);
oDatabaseTester.AddExpectation(new RowsInserted("tableName1", 3)); // 3
rows is expected to become inserted to table "tableName1"
oDatabaseTester.AddExpectation(new RowsDeleted("tableName2", 4));// 4
rows is expected to become deleted from table "tableName2"
oDatabaseTester.AddExpectation(new UpdatedRow("tableName3",
"columnName1", "newValue", "123"));
// the value of the column "columnName1" will get the value "newValue"
at the row with the primarykey "123" in the table "tableName3"
oDatabaseTester.MakeSnapShotOfTheDatabase(); // the content of the
database will be stored internally in the DatabaseTester class
// the code that should cause the above changes to the database (for
example NHibernate code or whatever)
oDatabaseTester.VerifyAllExpectationsHaveBeenMetSi nceTheSnapshot();
/Tom