0

我正在使用 Spring Data Neo4j,在 Spring 中创建了一个应用程序。我可以在 JUnit 测试用例的帮助下运行我的应用程序。但是每次我运行我的测试用例时,它都会在使用<neo4j:config storeDirectory="target/neo4j-db"/>. 这会在 Eclipse 中我的工作区所在的同一位置创建 db。

我已经在我的 ubuntu 中安装了 Neo4j debian 包,默认情况下数据库位于/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)在所需的方法上添加 a。必须这样做,因为 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"/>

于 2012-12-15T15:49:39.437 回答