我已经编写了一个web服务,现在想为它编写一些单元测试。 我偶然发现了Michael Hunger's in memory server。
由于文档稀疏,我很难设置一个单元测试。 我克隆了项目,将其包含在我的工作区中,并将其作为依赖项添加到我的项目中。
为了测试我的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 29,2014 10:13:17 PM org.neo4j.server.logging.Logger log SEVERE:无法升级数据库Mai 29,2014 10:13:17 PM org.neo4j.server.logging.Logger日志严重: org.neo4j.server.ServerStartupException:启动Neo4j服务器失败: 由于预检任务[class]启动失败 org.neo4j.server.preflight.PerformUpgradeIfNecessary]:无法 升级数据库 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:218) 在org.neo4j.server.Bootstrapper.start(Bootstrapper.java:87)at org.neo4j.server.Bootstrapper.start(Bootstrapper.java:74)at at com.youtube.rest.status.test.CreateUserTest.setupInMemoryServer(CreateUserTest.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at java.lang.reflect.Method.invoke(未知来源)at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:47) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 在 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 在org.junit.runners.ParentRunner.run(ParentRunner.java:309)at 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.PreflightFailedException: 由于预检任务[class]启动失败 org.neo4j.server.preflight.PerformUpgradeIfNecessary]:无法 升级数据库 org.neo4j.server.AbstractNeoServer.runPreflightTasks(AbstractNeoServer.java:335) 在 org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:152) ......还有19个
Mai 29,2014 10:13:17 PM org.neo4j.server.logging.Logger log SEVERE: 无法在端口[7474]
上启动Neo Server真
status = 1
Mai 29,2014 10:13:17 PM org.neo4j.server.logging.Logger日志警告:失败 干净地关闭数据库。 Mai 29,2014 10:13:17 PM org.neo4j.server.logging.Logger log INFO:成功关闭Neo 端口[7474]上的服务器,数据库[未知位置]
我不知道为什么会发生这种情况,因为服务器内置在内存中,所有内容都应该(暂时)创建。我既不明白,如何发生数据库更新冲突,也不知道如何解决冲突。