0

私は Spring Data Neo4j を使用しており、Spring で 1 つのアプリケーションを作成しました。JUnit テスト ケースを利用してアプリケーションを実行できました。しかし、テスト ケースを実行するたびに、 を使用して指定したディレクトリ パスに新しいデータベースが作成されます<neo4j:config storeDirectory="target/neo4j-db"/>。これにより、ワークスペースがEclipseに存在するのと同じ場所にdbが作成されます。

デフォルトでデータベースが/var/lib/neo4j/data/graph.db. でデータベースを作成する代わりに、アプリケーションでこのデータベースを使用したいと考えていますtarget/neo4j-db。私は置き換えようとtarget/neo4j-db/var/lib/neo4j/data/graph.db、データベースへの読み取りと書き込みの許可を与えました。しかし、うまくいきません。

この構成の何が問題になっていますか? 何か不足していますか?

4

1 に答える 1

3

Neo4j DBに対してJUnitテストを実行するには、3つの選択肢があります

  • Neo4jが使用するローカルフォルダーを使用します。これを機能させるには、テストを実行する前にNeo4jサーバーを停止する必要があります。SpringJUnit4ClassRunner.classを使用してテストを実行していて、変更後に変更が元に戻らないことを確認したい場合は、必要なメソッドを追加する必要があり@Rollback(false)ます。SpringJUnit4ClassRunner.classは、テスト中にDBに対して行われたすべての変更をロールバックするため、これを行う必要があります。
  • RESTアプローチを使用します(また、SpringJUnit4ClassRunner.classのトリックを使用します)@Rollback(false)。これをローカルメソッドとは逆に機能させるには、テストを実行する前にNeo4jサーバーを起動しておく必要があります。また、次のようにxmlファイルを構成する必要があります。

    <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>

    • そして、使用できる最後のオプションは、非永続的なグラフデータベースです(これがあなたのケースをカバーしているとは思えないので、これは単なる情報です)。このメソッドは、テストを実行する目的でのみ一時DBを作成します。テストが完了した後はすべて削除されます。これが機能するためには、Neo4jサーバーが実行されているかどうかは関係ありません。xmlファイルに次の2行を追加するだけです。

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

于 2012-12-15T15:49:39.437 に答える