Ich habe eine Klasse Ich bin Unit-Tests, die relativ umfangreiche Datenbank-Setup erfordert, bevor die einzelnen Testmethoden ausgeführt werden können. Dieses Setup benötigt eine lange Zeit: Aus Gründen, die hoffentlich für die vorliegende Frage nicht relevant sind, muss ich die DB programmatisch statt aus einem SQL-Dump auffüllen.Setup und Abbau komplexer Datenbankstatus mit Hibernate/Spring/JUnit
Das Problem, das ich habe, ist mit dem Abbau. Wie kann ich alle Änderungen in der db-Setup-Phase einfach rückgängig machen?
Ich verwende derzeit Hibernate + Spring Transactional Testing, so dass meine individuellen Testmethoden in Transaktionen eingebettet sind.
Eine Lösung wäre, das db Setup innerhalb jeder Testmethode zu machen, so dass das db Setup automatisch zurückgesetzt wird. Die Testmethoden würden jedoch ewig dauern, da für jede Methode die Datenbank erneut vorbereitet werden muss.
Irgendwelche anderen Ideen? Im Grunde bin ich auf der Suche nach einem Weg, um meine db-Setup zu starten, führen Sie meine einzelnen Tests (jeweils in eine Transaktion verpackt, die nach der Ausführung zurückgesetzt wird), und dann Rollback der ursprünglichen db-Setup. Irgendwelche Ideen, um das in einer Hibernate/Spring/Junit Mode zu machen? Gibt es einen Hibernate-Befehl "Alle Tabellen löschen"?
Manchmal vergesse ich die einfachsten Optionen. Bonuspunkte für Sie. –
Also, wenn Sie dies als Lösung akzeptieren, bedeutet das, dass Sie sich für das db setup/tear down pro Einzeltest entschieden haben? –
Ich ging tatsächlich mit der Einrichtung der Datenbank einmal für eine Reihe von Tests in der gleichen Klasse mit einer statischen @ BeforeClass Junit-Methode definiert. Aber es wäre einfach genug, auf Testbasis mit einer @Before-JUnit-Methode zu arbeiten. –