我正在构建一个Neo4j (2.2.3)非托管扩展,并试图运行集成测试。按照docs中的示例,我有:
@Test
public void testInsertInitiative() throws Exception {
try ( ServerControls server = TestServerBuilders.newInProcessBuilder()
.withExtension("/graph/initiative", InitiativeController.class)
.withFixture(TestFixtures.foobar(x, y, z))
.newServer() )
{
HTTP.Response response = //... I can't get this far...
}
} 但是,每当我包含数据夹具时,测试就无法在
java.io.EOFException: No content to map to Object due to end of input
at org.neo4j.harness.internal.Fixtures.ensureInstallSuccessful(Fixtures.java:127)
at org.neo4j.harness.internal.Fixtures.applyTo(Fixtures.java:110)
at org.neo4j.harness.internal.InProcessServerBuilder.newServer(InProcessServerBuilder.java:75)
at org.mycompany.myproject.MyTestClass.myTest(MyTestClass.java:87)如果我注释掉了夹具的包含,测试就会像预期的那样运行,所以问题肯定存在(也可以从堆栈跟踪.)。我已经验证了我的TestFixtures方法通过c/p‘将它放入控制台并在那里成功地执行它来生成一个有效的密码语句。我也试过用一个简单的
.withFixture("CREATE (:foo)")也有同样的结果。
这种情况在2.2.3和2.2.2版本中都会发生,无论是否加载我的扩展都会发生。
通过几个层的调试跟踪,我发现在第109行的ClientResponse response = client.handle( req )调用中接收到的响应有一个服务器错误状态和一个空实体,我认为这将导致EOF.
但是为什么服务器出错呢?同样,I/C/P从客户端发出的调用中获取有效负载,并将其(成功地)发送到非测试服务器。
下面是我的pom依赖项:
<properties>
<java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<neo4j.version>2.2.3</neo4j.version>
</properties>
<dependencies>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.neo4j.app</groupId>
<artifactId>neo4j-server</artifactId>
<version>${neo4j.version}</version>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.neo4j.test</groupId>
<artifactId>neo4j-harness</artifactId>
<version>${neo4j.version}</version>
<scope>test-jar</scope>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.lambdaj</groupId>
<artifactId>lambdaj</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>发布于 2015-06-26 08:58:44
摆脱这种依赖将使SSCCE中的测试通过:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>https://stackoverflow.com/questions/31061897
复制相似问题