Datenbankbereinigung nach Selenium-Tests
-
10-10-2019 - |
Frage
Nachdem ich ein Bündel von Selen (junit4) Tests mit Maven ausführen, würde Ich mag eine Datenbank clean-up (Entfernen Dinge, die sie usw. eingefügt) zu tun. Es ist ein älteres Projekt läuft auf Tapestry / Frühjahr / Hibernate und eine Legacy-Datenbank. Ich mag die Sanierung in einer @After
kommentierten Methode tun -. Aber die Injektion von DAO / Manager / Session nicht funktioniert
Die Prüfung geht so: Ich betreibe (mvn jetty:run-war
) die App in einer Konsole, und starten Sie die Prüfung in einer anderen Konsole (mvn test
) - es die App auf localhost zugreift. 8080
Lösung
Mehrere mögliche Ansätze:
- Verwenden Sie DBUnit , die eine Datenbank zu einem Know Zustand zurückzukehren zwischen den Tests ausgelegt ist.
- Wrap jeden Test in einer Datenbanktransaktion mit einem
try{} finally{}
Block, in dem die schließlich rollt die Transaktion zurück. - Verwenden Sie eine Datenbank ausschließlich für die Prüfung und keine Sorge darüber. Machen Sie Ihre Tests erstellen eindeutig identifiziert / benannten Werte jedes Mal, so dass Sie nicht Konflikte haben, aber ansonsten nehmen Sie keine Aktion.
Andere Tipps
Ich würde eher verwenden
@Transactional
der Vermerk über Methodendeklaration. Es läuft nach jedem Test Rollbacks. Es funktioniert gut für mich.
Zum Beispiel:
@Test
@Transactional
public void simpleTest(){
// your logic here
}