2012-12-10 41 views
0

我正在使用Spring Data Neo4j,在Spring中創建了一個應用程序。我可以在JUnit測試用例的幫助下運行我的應用程序。但每次運行我的測試用例時,它都會在使用<neo4j:config storeDirectory="target/neo4j-db"/>指定的目錄路徑中創建一個新數據庫。這將在我的工作空間出現在Eclipse中的同一位置創建數據庫。spring數據neo4j使用現有數據庫

我已經在我的ubuntu中安裝了Neo4j debian軟件包,默認數據庫是/var/lib/neo4j/data/graph.db。我希望我的應用程序使用此數據庫,而不是在target/neo4j-db中創建一個。我試圖用/var/lib/neo4j/data/graph.db代替target/neo4j-db,並且已經給予讀取和寫入數據庫的權限。但它不起作用。

這種配置有什麼問題?我錯過了什麼?

+0

有一行:'org.neo4j.server。 database.location =數據/ graph.db'。也許在這裏編輯位置並重新啓動服務器將有所幫助。 – ulkas

+0

'@ ulkas':這不會解決這個問題,該文件不會被彈簧數據Neo4j使用,而只會被Neo4j安裝的debian軟件包使用。所以,當我更新這個文件並重新啓動服務器時,它會在第一次指定的新位置創建一個新的數據庫。 Spring Data Neo4j只能訪問'springContext.xml'中提供的配置。 – srahul07

+0

什麼與服務器數據庫目錄「不起作用」?您必須停止您的服務器以使您的測試訪問數據庫。 –

回答

3

若要對一個Neo4j的DB JUnit測試你有3個選擇

  • 使用由Neo4j的使用本地文件夾。爲此,在運行測試之前必須停止Neo4j服務器。如果您正在使用SpringJUnit4ClassRunner.class運行測試,並且想要確保更改在更改後不會恢復,則必須將@Rollback(false)置於所需的方法上。必須這樣做,因爲SpringJUnit4ClassRunner.class將回滾測試期間對數據庫所做的所有更改。
  • 使用REST的方法(並再次使用@Rollback(false)的技巧爲SpringJUnit4ClassRunner.class)。爲了使其與本地方法相反,必須在運行測試之前啓動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>

    • 你也可以使用最後一個選項是無常圖形數據庫(這僅僅是信息,因爲我懷疑,這包括你的情況)。此方法將僅爲運行測試而創建臨時數據庫。測試完成後的所有內容都將被刪除。如果Neo4j服務器正在運行或者沒有運行,這個工作並不重要。你只需要在你的XML文件中添加以下兩行:

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

在`的conf/Neo4j的-server.properties`文件
+0

謝謝@paf ...會測試這個... – srahul07