2

以下のように setUp() メソッドで GraphDatabaseService を作成したい場合:

      private GraphDatabaseService graphDb;

      @BeforeMethod
      public void setUp() throws Exception {
        graphDb = new TestGraphDatabaseFactory().newImpermanentDatabase();
      }

エラーが発生します:

java.lang.AbstractMethodError: org.neo4j.test.impl.EphemeralFileSystemAbstraction.autoCreatePath(Ljava/io/File;)V
    at org.neo4j.kernel.StoreLocker.lock(StoreLocker.java:73)
    at org.neo4j.kernel.InternalAbstractGraphDatabase.create(InternalAbstractGraphDatabase.java:287)
    at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:227)
    at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:79)
    at org.neo4j.test.ImpermanentGraphDatabase.<init>(ImpermanentGraphDatabase.java:78)
    at org.neo4j.test.TestGraphDatabaseFactory$1.newDatabase(TestGraphDatabaseFactory.java:46)
    at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:205)
    at org.neo4j.test.TestGraphDatabaseFactory.newImpermanentDatabase(TestGraphDatabaseFactory.java:36)
    at pl.piotr0123456.neo4j.operations.GraphOperationsTest.setUp(GraphOperationsTest.java:29)

これの回避策として、次を使用します。

     graphDb = new TestGraphDatabaseFactory().newEmbeddedDatabase("target/testGraph/test1");

トランザクションのロールバックあり。しかし、これは良い解決策ではないと思います。

単体テストごとにクリーンなグラフをメモリ内に作成することは可能ですか?

4

1 に答える 1

2

test-data/impermanent-db内部では、ImpermanentGraphDatabase はファイルシステムで (1.9.RC2 で) を使用します。あなたはどちらかできます

  • test-data/impermanent-db十分な権限があることを確認してください
  • factory: なしで ImpermanentGraphDatabase を直接インスタンス化しますnew org.neo4j.test.ImpermanentGraphDatabase(myStoreDirectory)myStoreDirectoryたとえば、一時ディレクトリである可能性があります。

複数のテストを並行して実行する場合は注意してください。この場合、複数の ImpermanentGraphDatabase インスタンスが同じストア ディレクトリを共有できないため、2 番目の方法を使用する必要があります。

于 2013-05-05T08:54:42.907 に答える