Spring Web アプリのテストをいくつか作成しようとしています。MockMvc を使用するいくつかのテスト クラスと、Selenium を使用する Cucumber テスト クラスがあります。すべてのテストは、InProcessServer インスタンスに接続された CRUD 操作を実行します。
Gradle を使用してテストを実行すると、MockMvc テスト クラスが実行されてパスしますが、Cucumber テスト ステップが実行されると、次のようになります。
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "POST /db/data/transaction/commit HTTP/1.1[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Content-Type: application/json;charset=UTF-8[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Accept: application/json;charset=UTF-8[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "User-Agent: neo4j-ogm.java/1.0[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Content-Length: 131[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Host: localhost:7478[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Connection: Keep-Alive[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "Accept-Encoding: gzip,deflate[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 >> "{"statements":[{"statement":"MATCH (n:`User`) RETURN COUNT(n)","parameters":{},"resultDataContents":["row"],"includeStats":false}]}"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "HTTP/1.1 404 Not Found[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "Date: Thu, 17 Sep 2015 15:44:05 GMT[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "Cache-Control: must-revalidate,no-cache,no-store[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "Content-Type: text/html; charset=ISO-8859-1[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "Content-Length: 304[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "Server: Jetty(9.2.4.v20141103)[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "[\r][\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<html>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<head>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<title>Error 404 </title>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "</head>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<body>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<h2>HTTP ERROR: 404</h2>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<p>Problem accessing /db/data/transaction/commit. Reason:[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<pre> Not Found</pre></p>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "<hr /><i><small>Powered by Jetty://</small></i>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "</body>[\n]"
2015-09-17 16:44:05 DEBUG org.apache.http.wire - http-outgoing-3 << "</html>[\n]"
2015-09-17 16:44:05 INFO o.s.d.n.config.Neo4jConfiguration - Intercepted exception
何が原因でしょうか? これは、テスト完了後にポート 7478 で実行されているサーバーがないため、Neo4j サーバーである必要があります。また、これはランダムなポートで構成されているため、テスト Web サーバーでもありません。
2015-09-17 16:44:04 INFO o.s.b.c.e.j.JettyEmbeddedServletContainer - Jetty started on port(s) 37837 (http/1.1)
編集:
@Configuration
@EnableNeo4jRepositories(basePackages = "co.sens.data.repositories")
@EnableTransactionManagement
@ComponentScan("co.sens.data")
public class Neo4jTestConfiguration extends Neo4jConfiguration {
@Override
public SessionFactory getSessionFactory() {
return new SessionFactory("co.sens.data");
}
@Bean
@Override
public Neo4jServer neo4jServer() {
return new InProcessServer();
}
@Override
@Bean
public Session getSession() throws Exception {
return super.getSession();
}
}