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

War es hilfreich?

Lösung

Mehrere mögliche Ansätze:

  1. Verwenden Sie DBUnit , die eine Datenbank zu einem Know Zustand zurückzukehren zwischen den Tests ausgelegt ist.
  2. Wrap jeden Test in einer Datenbanktransaktion mit einem try{} finally{} Block, in dem die schließlich rollt die Transaktion zurück.
  3. 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     
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top