Ho una classe Sono un test di unità che richiede un'impostazione di database piuttosto estesa prima che i singoli metodi di test possano essere eseguiti. Questa configurazione richiede molto tempo: per ragioni che spero non siano rilevanti per la domanda in questione, ho bisogno di compilare il DB in modo programmatico anziché da un dump SQL.Installazione e demolizione dello stato di un database complesso con Hibernate/Spring/JUnit
Il problema che ho è con il tear-down. Come posso facilmente ripristinare tutte le modifiche apportate nella fase di configurazione di db?
Attualmente sto utilizzando il supporto per il test transazionale Hibernate + Spring, in modo tale che i miei singoli metodi di test siano integrati nelle transazioni.
Una soluzione sarebbe quella di eseguire l'installazione del db all'interno di ciascun metodo di test, in modo tale che l'impostazione del db venga ripristinata automaticamente. Tuttavia, i metodi di test impiegherebbero un'eternità per essere eseguito poiché ogni metodo avrebbe bisogno di ri-preparare il database.
Altre idee? Fondamentalmente, sto cercando un modo per eseguire il mio db setup, eseguire i miei test individuali (ciascuno avvolto in una transazione che viene sottoposta a rollback dopo l'esecuzione) e quindi eseguire il rollback del setup iniziale di db. Qualche idea su come farlo funzionare in una moda Hibernate/Spring/Junit? Esiste un comando equivalente "rilascia tutte le tabelle" di Hibernate?
A volte mi dimentico delle opzioni più semplici. Punti bonus per te. –
Quindi accettando questo come soluzione significa che hai optato per il db setup/tear down per ogni test? –
In realtà sono andato con l'impostazione del db una volta per una serie di test definiti nella stessa classe utilizzando un metodo @BeforeClass Junit statico. Ma sarebbe abbastanza facile da fare in base al test con un metodo @Before JUnit. –