Wir verwenden derzeit Watin, um UI-Tests für unsere Webanwendung durchzuführen. In der Tat machen wir Integrationstests von oben nach unten, da wir eine Testdatenbank und kein Mocking verwenden.
Um sicherzustellen, dass sich die Testdatenbank in einem erwarteten Zustand befindet, haben wir bisher die Snapshot-Funktion von SQL Server verwendet, um die Datenbank zu Beginn eines jeden Tests zurückzusetzen. Dies ist ziemlich langsam und führt außerdem unmittelbar nach der Wiederherstellung des Snapshots zu einem Fehler.
Da jeder der Tests die Benutzeroberfläche aufruft und möglicherweise mehrere Datenbankverbindungen verwendet, haben wir keine Möglichkeit, eine Transaktion für jede Verbindung zu starten.
Ich frage mich, ob es möglich ist, alle Datenbankverbindungen irgendwie an eine einzige Transaktion anzuhängen und sie zu einem späteren Zeitpunkt zurückzusetzen? Dies müsste wahrscheinlich auf der Ebene der Datenbank selbst geschehen.
Wenn jemand andere Vorschläge hat, wie wir unsere Testdaten für jeden UI-Test zurücksetzen können, würde ich gerne Ihre Ideen hören.