nettoyage de base de données après des tests Selenium
-
10-10-2019 - |
Question
Après avoir couru un tas de Sélénium essais (junit4) en utilisant Maven, je voudrais faire une base de données de nettoyage (enlever les choses ils inséraient etc.). Il est un ancien projet en cours d'exécution sur Tapestry / Spring / Hibernate et une base de données existante. Je voudrais faire le nettoyage dans une méthode annotée de @After
-. Mais l'injection de DAO de / gestionnaires / SessionFactory ne fonctionne pas
Le test va comme ceci: je lance (mvn jetty:run-war
) l'application dans une console, et commencer les tests dans une autre console (mvn test
) - il accède à l'application sur localhost:. 8080
La solution
Plusieurs approches possibles:
- DBUnit , qui est conçu pour retourner une base de données à un état de savoir entre les tests.
- Enveloppez chaque test dans une transaction de base de données avec un bloc de
try{} finally{}
où les enfin annule la transaction. - Utiliser une base de données strictement pour tester et ne vous inquiétez pas à ce sujet. Faites vos tests de créer identifié de manière unique / valeurs nommées à chaque fois que vous n'avez pas les conflits, mais sinon ne prennent aucune mesure.
Autres conseils
Je préférerais utiliser
@Transactional
anotation ci-dessus déclaration de méthode. Il fonctionne rollback après chaque test. Ça fonctionne bien pour moi.
Par exemple:
@Test
@Transactional
public void simpleTest(){
// your logic here
}