2012-12-10 5 views
0

J'utilise Spring Data Neo4j, j'ai créé une application au printemps. Je pourrais exécuter mon application avec l'aide des cas de test JUnit. Mais chaque fois que j'exécute mes cas de test, il crée une nouvelle base de données dans le chemin de répertoire spécifié en utilisant <neo4j:config storeDirectory="target/neo4j-db"/>. Cela crée db dans le même emplacement où mon espace de travail est présent dans Eclipse.données de printemps neo4j utilisent la base de données existante

J'ai installé le paquet debian Neo4j dans mon ubuntu qui a par défaut la base de données dans /var/lib/neo4j/data/graph.db. Je veux que mon application utilise cette base de données au lieu de créer celle de target/neo4j-db. J'ai essayé de remplacer target/neo4j-db par /var/lib/neo4j/data/graph.db et j'ai donné l'autorisation de lire et écrire dans la base de données. Mais ça ne marche pas.

Quel est le problème avec ces configurations? Est-ce que je manque quelque chose?

+0

dans votre fichier 'conf/Neo4j-server.properties' il y a une ligne:' org.neo4j.server. database.location = data/graph.db'. peut-être modifier l'emplacement ici et redémarrer le serveur aiderait. – ulkas

+0

'@ ulkas': Ceci ne résoudra pas ce problème, le fichier n'est pas utilisé par les données printanières Neo4j, à la place il n'est utilisé que par le paquet Debian installé par Neo4j. Ainsi, il créera une nouvelle base de données au nouvel emplacement spécifié pour la première fois lorsque je mettrai à jour ce fichier et redémarrerai le serveur. Spring Data Neo4j ne peut accéder qu'aux configurations fournies dans 'springContext.xml'. – srahul07

+0

Qu'est-ce qui ne fonctionne pas avec le répertoire de base de données du serveur? Vous devez arrêter votre serveur pour que vos tests accèdent à la base de données. –

Répondre

3

Pour exécuter vos tests JUnit contre un Neo4j DB vous avez 3 choix

  • Utilisez le dossier local utilisé par Neo4j. Pour que cela fonctionne, vous devez arrêter le serveur Neo4j avant de lancer vos tests. Si vous exécutez vos tests avec SpringJUnit4ClassRunner.class et que vous voulez vous assurer que vos modifications ne sont pas annulées après les changements, vous devez mettre un @Rollback(false) sur les méthodes que vous voulez. Cela doit être fait parce que SpringJUnit4ClassRunner.class annulera toutes les modifications apportées à la base de données pendant les tests.
  • Utilisez une approche REST (et utilisez à nouveau l'astuce avec @Rollback(false) pour la classe SpringJUnit4ClassRunner.class). Pour que cela fonctionne contrairement à la méthode locale, vous devez avoir démarré le serveur Neo4j avant d'exécuter vos tests. Vous devez également configurer votre fichier xml comme ceci:

    <neo4j:config graphDatabaseService="graphDatabaseService"/> <bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase"> <constructor-arg value="http://localhost:7474/db/data/" index="0" /> </bean>

    • Et la dernière option, vous pouvez utiliser est un Impermanent Graph Database (Ceci est juste pour info parce que je doute que cela couvre votre cas). Cette méthode créera une base de données temporaire uniquement dans le but d'exécuter les tests. Tout ce qui sera fait après les tests sera supprimé. Pour que cela fonctionne, peu importe si le serveur Neo4j est en cours d'exécution ou non. Il vous suffit d'ajouter dans votre fichier xml ces deux lignes:

    <neo4j:config graphDatabaseService="graphDatabaseService"/> <bean id="graphDatabaseService" class="org.neo4j.test.ImpermanentGraphDatabase" destroy-method="shutdown"/>

+0

Merci @paf ... Je vais tester ça ... – srahul07

Questions connexes