java-Neo4j:正确测试螺栓驱动程序的单元

我在http://neo4j.com/developer/java/之后将Neo4j Bolt驱动程序添加到我的应用程序中:

import org.neo4j.driver.v1.*;

Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "neo4j" ) );

Session session = driver.session();
session.run( "CREATE (a:Person {name:'Arthur', title:'King'})" );

StatementResult result = session.run( "MATCH (a:Person) WHERE a.name = 'Arthur' RETURN a.name AS name, a.title AS title" );

while ( result.hasNext() )

{
    Record record = result.next();
    System.out.println( record.get( "title" ).asString() + " " + record.get("name").asString() );
}
session.close();
driver.close();

但是,始终根据官方的documentation单元测试使用:

GraphDatabaseService db = new TestGraphDatabaseFactory()
            .newImpermanentDatabaseBuilder()

因此,如果我想以某种方式测试上面的代码,则必须用测试中的GraphDatabaseService替换GraphDatabase.driver(“ bolt:// localhost”,…).我怎样才能做到这一点?据我所知,我无法从那里提取任何类型的内存驱动程序.

解决方法:

Neo4j JDBC有一个名为Neo4jBoltRule的类用于单元测试.这是一条启动/停止非永久性数据库的基本规则以及一些用于启动螺栓的配置.

规则类使用动态端口分配来防止由于并行运行多个测试而导致测试失败(请考虑您的CI基础结构).

使用该规则类的单元测试的示例可从https://github.com/neo4j-contrib/neo4j-jdbc/blob/master/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/SampleIT.java获得.

上一篇:java-嵌入式Neo4j实际如何工作?


下一篇:php-使用循环优化Cypher查询以构建时间树