BeforeClass à l'aide de Printemps transactionnelle tests
Je suis en utilisant le Printemps transactionnelle classes de test pour faire des tests unitaires de mon code DAO. Ce que je veux faire, c'est de créer ma base de données une fois, avant que tous les tests s'exécutent. J'ai un @BeforeClass méthode annotée mais qui s'exécute avant le Printemps des charges jusqu'le contexte de l'application et configure le jdbcTemplate, donc je n'ai pas fait de disposer d'une connexion à la DB à l'époque. Est-il un moyen de faire fonctionner mon DB programme d'installation une fois après le contexte des charges, mais avant les tests de commencer à courir?
Ce thead pose la même question, mais la solution retenue semble être juste "ne pas faire". Je suis enclin à dire que cela semble juste comme il n'est pas faisable.
- Quelle a été votre solution? Comment avez-vous fait ce travail?
- Depuis, j'ai déménagé à Ressort 3 et je suis en utilisant jdbc:intégré-base de données de balise xml pour configurer ma base de données avant la réalisation du test. J'ai aussi créé une coutume exécution du test de l'auditeur qui s'enroule DBUnit opérations de validation/réinitialisation de la base de données de l'état après chaque cas de test. Voir blog.zenika.com/index.php?post/2010/02/05/...
- Je l'ai juste mis en place, et BeforeClass méthode annotée s'exécute après le printemps des charges jusqu'le contexte..à l'aide de testNG
Vous devez vous connecter pour publier un commentaire.
J'avais deuxième les conseils que vous devriez faire de chacun de vos tests autonomes et, par conséquent, faire tout votre installation avec le @Avant, plutôt qu'avec @BeforeClass.
Si vous le souhaitez, pour coller avec votre approche suffit d'utiliser la méthode @before et un simple booléen vérifier pour voir si l'installation a déjà été réalisé. par exemple,
Pas trop de fantaisie, mais il va fonctionner!
Voir ma réponse ici pour un exemple de printemps de la transaction de test avec des annotations à l'aide de dbunit.
Espérons que cette aide!
ma solution, un peu compliqué, mais j'en avais besoin pour un framework de test 🙂
n'ayez pas peur de l'allemand javadoc, les noms de méthode et d'organes devrait être suffisant pour obtenir
PREMIÈRE créer des Annotations pour marquer la Classe ou la méthode de travail de base de données (create table et/ou des instructions insert)
DEUXIÈME créer auditeur qui semble pour l'annotation, AbstractTestExecutionListener
est un Framework Spring Classe de
TROISIÈME ajouter l'écouteur à l'exécution du test de
dans l'utilisation
il est important de noter - méfiez-vous de fil de problèmes tout en utilisant testNg des tests parallèles, pour que cela fonctionne, il devrait y avoir "synchronisé" marqueurs pour la getJdbcTemplate /source de données Méthodes de l'auditeur
ps:
le code pour le test de la classe de base:
LogDurationTestExecutionListener et LogMethodNameTestExecutionListener sont des modules d'écoute personnalisés ne sont pas fournis par le printemps, mais pas nécessaire pour le schemaImport pour fonctionner correctement
Je ne sais pas ce framework de test unitaire que vous utilisez, mais pour JUnit, vous pouvez faire votre test de la classe sous-classe AbstractTransactionalJUnit4Springcontexttests qui a un executeSqlScript cette méthode peut être exécutée dans un beforeclass ou beforemethod méthode. Ma préférence est d'utiliser BeforeMethod que cela signifie que chacun de mes tests unitaires sont autonomes, même si cela signifie de mes tests unitaires être un peu plus lent.
Essayez d'utiliser vos vieilles méthodes à la place de la fantaisie des annotations.