如何在内存服务器中使用neo4j编写单元测试

如何在内存服务器中使用neo4j编写单元测试,neo4j,Neo4j,我已经编写了一个Web服务,现在想为它编写一些单元测试。 我偶然发现了 由于文档稀少,我很难只设置一个单元测试。 我克隆了项目,将其包含在我的工作区中,并将其作为依赖项添加到我的项目中 为了测试我的web服务,我编写了以下方法来创建内存中的neo4j服务器: @BeforeClass public static void setupInMemoryServer() { CommunityBootstrapper s = new CommunityBootstrapper(); i

我已经编写了一个Web服务,现在想为它编写一些单元测试。 我偶然发现了

由于文档稀少,我很难只设置一个单元测试。 我克隆了项目,将其包含在我的工作区中,并将其作为依赖项添加到我的项目中

为了测试我的web服务,我编写了以下方法来创建内存中的neo4j服务器:

@BeforeClass
public static void setupInMemoryServer()
{
    CommunityBootstrapper s = new CommunityBootstrapper();
    int status = -1;
    try
    {
        status = s.start();
    }
    catch(Exception e)
    {
        System.out.println("could not start server");
        e.printStackTrace();
        System.out.println(e.getMessage());
        System.out.println(e.getCause());
        System.out.println(e.getLocalizedMessage());
    }
    System.out.println(hostAvailabilityCheck());
    System.out.println("status = "+status);


}
public static boolean hostAvailabilityCheck() { 
        try (Socket s = new Socket("127.0.0.1", 7474)) {
            return true;
        } catch (IOException ex) {
            System.out.println ("Neo server not online");
        }
        return false;
    }
运行此代码时,我得到以下输出:

Mai 292014 10:13:17 PM org.neo4j.server.logging.Logger日志严重:无法升级数据库Mai 292014 10:13:17 PM org.neo4j.server.logging.Logger日志严重: org.neo4j.server.ServerStartupException:启动neo4j服务器失败: 由于飞行前任务[class]导致启动失败 org.neo4j.server.preflight.PerformUpgradeIfEssential]:无法 在升级数据库 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:218) 位于org.neo4j.server.Bootstrapper.start(Bootstrapper.java:87) org.neo4j.server.Bootstrapper.start(Bootstrapper.java:74)位于 com.youtube.rest.status.test.CreateUserTest.setupInMemoryServer(CreateUserTest.java:26) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 位于的sun.reflect.NativeMethodAccessorImpl.invoke(未知源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于 java.lang.reflect.Method.invoke(未知源代码)位于 org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:47) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:44) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 在 org.junit.internal.runners.statements.runafter.evaluate(runafter.java:27) 位于org.junit.runners.ParentRunner.run(ParentRunner.java:309) org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 原因:org.neo4j.server.preflight.preflight失败异常: 由于飞行前任务[class]导致启动失败 org.neo4j.server.preflight.PerformUpgradeIfEssential]:无法 在升级数据库 org.neo4j.server.AbstractNeoServer.runPreflightTasks(AbstractNeoServer.java:335) 在 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:152) ... 还有19个

Mai 292014 10:13:17 PM org.neo4j.server.logging.Logger日志严重: 无法在端口[7474]上启动Neo服务器

真的

状态=1

2014年5月29日 10:13:17 PM org.neo4j.server.logging.Logger日志警告:未能 干净地关闭数据库。2014年5月29日晚上10:13:17 org.neo4j.server.logging.Logger日志信息:已成功关闭Neo 端口[7474]上的服务器,数据库[未知位置]


我不知道为什么会发生这种情况,因为服务器是在内存中构建的,所有东西都是(应该)临时创建的。我不知道数据库更新冲突是如何发生的,也不知道如何解决它们。

根据堆栈跟踪中的字符串“无法升级数据库”,看起来您的数据库需要升级,但升级无法自动完成。您可能需要执行“显式升级”,如中所述。

请务必注意,仅使用相同版本的JAR。对于内存服务器,只应使用2.0.0版本。只需将这两个jar文件复制到system/lib文件夹中,即可在内存模式下启动引擎。不需要社区引导程序。