模拟网络服务器:java.lang.NoSuchMethodError
MockWebServer: java.lang.NoSuchMethodError
第一次在使用 Spock 进行单元测试的 Groovy/Spring 项目上尝试 MockWebServer。
我按照指示添加了 MockWebServer 依赖项(我不得不自己添加第二行以避免错误,但没有记录在案:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")
我有一个基本的 Spock 测试,如下所示:
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)
谢谢!
尝试添加这个:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("com.squareup.okhttp3:okhttp:4.0.0")
对于 MockWebServer,您的 OkHttp 依赖项必须是同一版本。
我遇到了同样的问题,我在版本中找到了解决方案,只需将版本更改为“3.7.0”即可正常使用。
有一些关于版本更改为“3.4.1”的讨论,但这个版本遇到了问题(无法从最终 class 继承),在这个问题上讨论过:
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")
第一次在使用 Spock 进行单元测试的 Groovy/Spring 项目上尝试 MockWebServer。
我按照指示添加了 MockWebServer 依赖项(我不得不自己添加第二行以避免错误,但没有记录在案:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.40")
我有一个基本的 Spock 测试,如下所示:
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)
谢谢!
尝试添加这个:
testImplementation("com.squareup.okhttp3:mockwebserver:4.0.0")
testImplementation("com.squareup.okhttp3:okhttp:4.0.0")
对于 MockWebServer,您的 OkHttp 依赖项必须是同一版本。
我遇到了同样的问题,我在版本中找到了解决方案,只需将版本更改为“3.7.0”即可正常使用。
有一些关于版本更改为“3.4.1”的讨论,但这个版本遇到了问题(无法从最终 class 继承),在这个问题上讨论过:
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")