MockWebServer: java.lang.NoSuchMethodError - PullRequest
1 голос
/ 02 июля 2019

Попытка MockWebServer впервые в проекте Groovy / Spring, который использует Spock для модульного тестирования.

Я добавил зависимости MockWebServer в соответствии с указаниями (мне пришлось добавить вторую строку самостоятельно, чтобы избежать ошибок, но это не задокументировано:

testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")

У меня есть базовый тест Спока, который выглядит следующим образом:

def 'server'() {
    setup:
    MockWebServer server = new MockWebServer()

    expect:
    server
}

Но с этим выводом ничего не получится:

java.lang.NoSuchMethodError: okhttp3.internal.Util.immutableListOf([Ljava/lang/Object;)Ljava/util/List;

    at okhttp3.mockwebserver.MockWebServer.<init>(MockWebServer.kt:176)

Есть ли еще одна зависимость, по которой я скучаю? Разве MockWebServer плохо работает с Groovy и Spock?

Для чего стоит использовать версию 3.1.4, похоже, работает:

testImplementation("com.squareup.okhttp3:mockwebserver:3.14.2")

(я впервые пользуюсь MockWebServer)

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Попробуйте добавить это:

testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("com.squareup.okhttp3:okhttp:4.0.0")

В MockWebServer ваша зависимость OkHttp должна быть той же версии.

0 голосов
/ 07 июля 2019

У меня та же проблема, я нашел решение в версии, просто изменил версию на "3.7.0", и она работает нормально.

существует некоторое обсуждение об изменении версии на "3.4.1", но эта версия получила проблему (не может наследовать от конечного класса), которая обсуждалась в этой проблеме: https://github.com/andrzejchm/RESTMock/issues/56
, поэтому самая безопасная версия - "3.7.0 ": D

просто обратите внимание, что обе версии должны быть одинаковыми.измените на зависимости ниже:

//mock retrofit
testImplementation("com.squareup.okhttp3:mockwebserver:3.7.0")
testImplementation("com.squareup.okhttp3:okhttp:3.7.0")
//if your source code is java
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")
...