6
votes

Tests d'intégration avec MongoDB?

Je dois faire plusieurs tests d'intégration sur une base de données Mongo à l'aide de Java et je cherchais une solution de type dbunit (DBUnit est pour Hibernate) qui peut remplir ma base de données avec des données personnalisées et réinitialiser l'état après chaque exécution.

TOUT TIPS?

merci


1 commentaires

Répondu en détail sous cette question Stackoverflow.com/ Questions / 6437226 / ...


5 Réponses :


2
votes

Voici ce que je fais: Connectez-vous à une instance de Mongo connue (souvent partagée), mais créez une nouvelle base de données unique pour chaque test de test à l'aide d'un UUID. Vous n'avez pas à vous soucier de créer des collections, car ils sont créés paresseusement lorsque vous stockez des documents en eux pour la première fois. Créer des index dont vous avez besoin dans le constructeur du référentiel ou DAO; Les créations d'index de Mongo réussissent immédiatement sans faire de travail si l'indice existe déjà. De toute évidence, vous n'avez pas besoin de vous inquiéter des migrations de schéma; -)

Ce schéma vous oblige à partir d'un magasin de données vide, mais c'est un état connu, il est donc suffisamment facile de remplir la phase de configuration de vos tests si nécessaire.

Lorsque le test est effectué, supprimez la base de données entière dans la phase de démolition.


0 commentaires

3
votes

Pour commencer, je ne sais aucun équivalent direct à DBUnit pour Mongo. Mongo est toujours un nouveau produit. Vous devrez donc probablement "rouler le vôtre" pour certaines de ces choses.

Cependant, plusieurs fonctionnalités de Mongo devraient faciliter la tâche:

  1. Il fonctionne avec des autorisations minimes
  2. Il peut simplement "exécuter" sur des fichiers préparés
  3. Il n'a pas vraiment de schéma (sauf index)
  4. Cela peut fonctionner des données JSON

    Basé sur votre jeu de données, il y a beaucoup de façons de le faire. Mais les outils de base sont là.

    • Vous devriez être capable de démarrer une version spécifiquement pour votre test, de votre test.
    • Vous devriez pouvoir importer des données "State" du fichier JSON.
    • Vous devriez pouvoir appliquer toutes les fonctions côté serveur à partir d'un fichier JS (à partir de zéro).

      Donc, tout cela devrait être assez simple. Bien que vous fassiez écrire une grande partie du code de colle.


1 commentaires

N'oubliez pas, vous pouvez utiliser le fichier.CreateTempfile de Java (avec fichier.deleeonexit) pour effectuer facilement des magasins de test Mongo DB.



0
votes

Cette question a été répondue ici et permet de démarrer et d'arrêter une instance entre chaque test: https://stackoverflow.com/a/9830861/82609

Mais commencez / arrêter entre chaque test semble ralentir les tests d'intégration, et vous feriez donc mieux de commencer / arrêter pour toute la suite de tests: https://stackoverflow.com/a/14171993/82609


0 commentaires

0
votes

Je sais que cette question est vieille, mais ma réponse sera peut-être utile pour quelqu'un. Voici un simple util que je l'ai écrit récemment: https://github.com/kirilldev/mongomery Très simple de remplir DB avec des données de Fichier JSON: P>

mongoDBTester.assertDBStateEquals("expectedTestData.json");


0 commentaires

0
votes

Vous pouvez utiliser NOSQL-UNIT qui a un module MongoDB


0 commentaires