2017-02-21 3 views
0

私はGraphawareパッケージを使用してNeo4j用のモジュールを開発しました。私のモジュールの一環として、いくつかのインデックスや制約がデータベースに存在することを確認したいと思います。この目的を達成するために、私はサイファー文のカップルを実行するためにBaseTxDrivenModule.initializeメソッドを使用します。私はのNeo4jのサーバインスタンスにモジュールをデプロイするときCREATE INDEXとCREATE CONSTRAINTのためにユニットテストを実行できません

@Override 
public void initialize(GraphDatabaseService database) 
{ 
    database.execute("CREATE CONSTRAINT ON (n:`Label`) ASSERT n.`id` IS UNIQUE;"); 
    database.execute("CREATE INDEX ON n:`Label2`(`id`) IS UNIQUE;"); 
} 

これらのステートメントは、生産で正常に実行します。しかし、ユニットテストをビルドプロセスの一環として実行したいとき、実行はハングアップして終了しません。 initializeメソッドを省略すると、エラーは発生しません。

最悪の場合は、mvn package -Dmaven.test.skip=trueのようなパッケージをビルドしなければならないか、何も構築されません。

私の質問は、なぜですか?そして、私はこの問題をどのように修正できますか?

ここでの問題を示すサンプルプロジェクトです:

https://github.com/ziadloo/test_neo4j_module

ちょうどそれを複製しmvn packageを実行し、テストが終了しないことがわかります。

+0

問題のテストをプロジェクトに提供できますか? –

+0

@ChristopheWillemsen私は質問を更新しました – Mehran

+0

ありがとう、クローン、適合し、返信しました –

答えて

1

テスト中にランタイムが開始されるという保証はありませんが、waitUntilStartedメソッドを呼び出すことによってアサートする必要があります。

@Before 
    public void setUp() { 
     database = new TestGraphDatabaseFactory() 
      .newImpermanentDatabaseBuilder() 
      .loadPropertiesFromFile(this.getClass().getClassLoader().getResource("neo4j-module.conf").getPath()) 
      .newGraphDatabase(); 

     getRuntime(database).waitUntilStarted(); 

     registerShutdownHook(database); 
    } 

私はあなたが例えばのためのNeo4j-uuidのモジュール内のいくつかのテストケースを見てみましょうお勧めします。

+0

ありがとう、私はそれを最初に私が得るチャンスに見ていきます。 – Mehran

関連する問題