如何在内存服务器中使用neo4j编写单元测试
我已经编写了一个Web服务,现在想为它编写一些单元测试。 我偶然发现了 由于文档稀少,我很难只设置一个单元测试。 我克隆了项目,将其包含在我的工作区中,并将其作为依赖项添加到我的项目中 为了测试我的web服务,我编写了以下方法来创建内存中的neo4j服务器:如何在内存服务器中使用neo4j编写单元测试,neo4j,Neo4j,我已经编写了一个Web服务,现在想为它编写一些单元测试。 我偶然发现了 由于文档稀少,我很难只设置一个单元测试。 我克隆了项目,将其包含在我的工作区中,并将其作为依赖项添加到我的项目中 为了测试我的web服务,我编写了以下方法来创建内存中的neo4j服务器: @BeforeClass public static void setupInMemoryServer() { CommunityBootstrapper s = new CommunityBootstrapper(); i
@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文件夹中,即可在内存模式下启动引擎。不需要社区引导程序。