pulizia del database dopo i test Selenium
-
10-10-2019 - |
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
Soluzione
Diversi approcci possibili:
- DBUnit , che è progettato per restituire un database in uno stato di know tra i test.
- Avvolgere ogni test in una transazione di database con un blocco
try{} finally{}
dove gli infine ripristina la transazione. - 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
}