2016-06-30 3 views
1

Я пытаюсь использовать wiremock (testCompile 'com.github.tomakehurst: wiremock: 2.1.4-rc3') для выполнения тестов JUnit в webapp, который использует 'org.eclipse.jetty: jetty -сервер: 9.3.6.v20151106 'как зависимость градиента.совместимость с wiremock с jetty9

Когда я бегу JUnit тестов, я получаю сообщение об ошибке и wiremock 2.1.4-RC3 не кажется, чтобы быть совместимым с jetty9 ...

[Error: java.lang.NoSuchMethodError: org.eclipse. jetty.server.Request.getUri() Lorg/затмение/пристань/HTTP/HttpURI;]

Full Stack:

java.lang.NoSuchMethodError: org.eclipse.jetty.server.Request.getUri()Lorg/eclipse/jetty/http/HttpURI; 
    at com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter.isBrowserProxyRequest(WireMockHttpServletRequestAdapter.java:219) 
    at com.github.tomakehurst.wiremock.verification.LoggedRequest.createFrom(LoggedRequest.java:59) 
    at com.github.tomakehurst.wiremock.http.AdminRequestHandler.handleRequest(AdminRequestHandler.java:40) 
    at com.github.tomakehurst.wiremock.http.AbstractRequestHandler.handle(AbstractRequestHandler.java:41) 
    at com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet.service(WireMockHandlerDispatchingServlet.java:99) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
    at org.eclipse.jetty.server.Server.handle(Server.java:517) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) 
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) 
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 
    at java.lang.Thread.run(Thread.java:745) 

ответ

1

Это проблема совместимости сервера Jetty.

Вы используете Jetty 9.3.6.v20151106, WireMock 2.1.4-rc3 зависит от Jetty 9.2.13.v20150730.

Этот метод был удален и не существует на org.eclipse.jetty.server.Request в Jetty 9.3.6.

public org.eclipse.jetty.http.HttpURI getUri(); 

Самым простым решением является, чтобы понизить версию Jetty вы используете, и использовать ту же версию, как WireMock. Кроме того, вы можете разветвить WireMock и обновить версию Jetty, которую вы используете. Не звучит оптимально? Уже обсуждалось реорганизацию WireMock, чтобы справиться с этим лучше: https://github.com/tomakehurst/wiremock/pull/442

+1

У меня была такая же проблема, как исправлено обновление wiremock: testCompile ('com.github.tomakehurst: wiremock: 2.5.1') – Boris