Domanda

Dopo ho eseguito una serie di test di selenio (Junit4) utilizzando Maven, mi piacerebbe fare un database pulito-up (le cose rimuovere hanno inserito, ecc). Si tratta di un progetto più vecchio in esecuzione su Tapestry / Primavera / Hibernate e un database legacy. Mi piacerebbe fare l'alto pulito in un metodo @After annotato -. Ma l'iniezione di DAO di / Manager / SessionFactory non fa il lavoro

Il test va come questa: ho eseguito (mvn jetty:run-war) l'applicazione in un'unica console e avviare il test in un'altra console (mvn test) - si accede l'applicazione su localhost:. 8080

È stato utile?

Soluzione

Diversi approcci possibili:

  1. DBUnit , che è progettato per restituire un database in uno stato di know tra i test.
  2. Avvolgere ogni test in una transazione di database con un blocco try{} finally{} dove gli infine ripristina la transazione.
  3. Usa un database strettamente per testare e non ti preoccupare. Fai il tuo test creare identificato in modo univoco / valori denominati ogni volta in modo da non avere conflitti, ma per il resto non intraprendano alcuna azione.

Altri suggerimenti

Avrei preferito usare

@Transactional

anotation sopra dichiarazione di metodo. Funziona rollback dopo ogni prova. Funziona bene per me.

Ad esempio:

@Test
@Transactional  
public void simpleTest(){    
    // your logic here     
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top