J'ai plusieurs tests d'intégration Maven qui mettent à jour l'état de la base de données, ce qui pourrait créer des conflits entre ces tests. Je me demandais s'il y a un moyen d'isoler ces tests d'intégration en exploitant des phases mavennes ou une autre approche? Idéalement, j'aimerais avoir un moyen d'exécuter des migrations de base de données avant chaque classe de test d'intégration. J'utilise Flagway comme outil de migration pour ma base de données PostgreSQL et j'utilise Junit 4.12. Les migrations que je travaille sont essentiellement créant et peupler des tables avec des données pour les tests. P>
3 Réponses :
Responsabilités de Maven consiste à exécuter des tests un par un sur essais d'intégration forte> phase et vérifiez les résultats sur vérifier strong>. Il est également capable de préparer / d'éteindre l'environnement. Vérifiez Plugin FréailSafe . p>
Et tout isolement entre les tests incombe à un cadre de test que vous utilisez (junit, test, concombre, etc.). P>
Est-il possible avec ces cadres de test pour appliquer les migrations de bases de données exécutant avant chaque classe d'essai d'intégration pour ramener la base de données à un état connu?
Oui, chacun de ces cadres a @Before code>. Mais il n'est pas clair de la question que vous utilisez exactement les cadres de test que vous utilisez et quel type de migration que vous souhaitez exécuter, tout ce que je peux dire que ce n'est pas une responsabilité de Maven. Je vous suggérerais de poser une autre question plus détaillée avec votre situation.
Désolé, j'ai ajouté plus de détails à la question. J'utilise Flagway et Junit 4.12. Les migrations que je cours sont essentiellement créant et peupler des tables avec des données pour les tests.
Junit a Ces méthodes sont alors responsables de la mise en place de la base de données dans un état connu avant chaque test. p> @Before code> et
@After code> annotations pour la laisser invoquer des méthodes avant et après chaque classe de test. p>
Quelle est la meilleure façon d'assurer des scripts de migration de base de données en utilisant le @Before code> et
@After code> annotations
Les scripts de migration de la base de données devraient à mon avis avant que des tests d'intégration soient démarrés (vous utilisez un cadre, non?) Et les méthodes Java ne doivent être responsables que de réinitialiser les tables à un état connu.
Je vois, oui j'utilise Flagway pour exécuter les migrations avant que les tests d'intégration ne soient démarrés avec Maven. Recherchez-vous également d'utiliser Flagway Tools pour réinitialiser les tables des méthodes Java?
Je ne suis pas assez familier avec la voie aérienne pour répondre à cela. Vous avez probablement besoin de quelque chose qui peut supprimer toutes les lignes et insérer des données de test connues.
J'ai pu résoudre ce problème en utilisant Flyway-Core Code>. Fondamentalement, j'ai fini par faire ce qui suit à l'intérieur de chacune des classes de test: