2013-04-23 13 views
5

Attualmente sto usando il sotto dopo ogni test che ho nella mia suite di test. Tuttavia lo rende molto lento perché H2 deve ricaricare il contesto dell'applicazione dopo ogni test. C'è un modo più rapido per svuotare tutti i miei oggetti, quindi non ho il riporto tra un test e l'altro?TearDown corretto Test di ibernazione con H2

@org.junit.After 
public void tearDown() throws Exception { 
    context.close(); 
} 
+0

perché non stai semplicemente ripristinando la transazione alla fine di ogni test? qualcosa come http://stackoverflow.com/questions/7618914/spring-integration-test-does-not-roll-back – ilcavero

+1

Se l'A fosse un bene per te, potresti accettarlo? Cambia stato da aperto. Thx –

+0

sarebbe bello vedere l'importazione/istanza di 'context'. –

risposta

7

Prova context.clear()

EntityManager.clear: Cancellare il contesto di persistenza, causando tutte le entità riusciti a staccarsi. Le modifiche apportate a entità che non sono state scaricate nel database non verranno mantenute.

Session.clear: Completa la sessione.

Inoltre, è possibile garantire che il gestore entità/sessione utilizzato in ciascun test sia identico implementando un modello singleton. E puoi usare uno script SQL dinamico per cancellare i dati da tutte le tabelle. Entrambi descritti in PersistenceHelper here.

+0

Glen, scusa per aver impiegato così tanto tempo, questo ha risolto il problema. – zmanc