gpt4 book ai didi

android - 尝试使用 MockWebServer 进行测试时出现错误

转载 作者:搜寻专家 更新时间:2023-11-01 09:23:12 28 4
gpt4 key购买 nike

有人知道这个错误是什么意思吗?或者可能错过了什么?

试图从这个 sample 开始,

添加了依赖项:testImplementation 'com.squareup.okhttp3:mockwebserver:3.11.0'

代码刚刚添加了一个 @Test findMessage_receivesAScriptedResponseFromMockBackend 到 AndroidStudio 的示例单元测试:

    public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}

///
@Rule
public MockWebServer mockBackend = new MockWebServer();

private MessagesApi mockApi() {
return new MessagesApi.Builder()
.baseUrl(mockBackend.url("/").toString())
.build();
}

@Test
public void builder_returnsInstance() {
final MessagesApi messagesApi = new MessagesApi.Builder()
.baseUrl("http://localhost:8888")
.build();

assertNotNull(messagesApi);
}

@Test
public void findMessage_receivesAScriptedResponseFromMockBackend() throws IOException {
mockBackend.enqueue(
new MockResponse()
.setBody("{\"text\":\"hello!\"}")
.setResponseCode(200)
.addHeader("Content-Type", "application/json;charset=utf-8")
);

final Response<Message> response = mockApi().findMessage("123").execute();

assertTrue((response.code()) == (200));
assertTrue((response.headers().get("Content-Type")).contains("application/json"));

final ResponseBody rawResponseBody = response.raw().body();
assertTrue((rawResponseBody.contentType().type()).equals("application"));
assertTrue((rawResponseBody.contentType().subtype()).equals("json"));
}

public class Message {

public String text;
}

public interface MessagesApi {

@GET("/message")
Call<Message> findMessage(@Query("query") String keyword);


/** Convenient builder for MessagesApi */
class Builder {
private String baseUrl;

public Builder() {}

public Builder baseUrl(String baseUrl) {
this.baseUrl = baseUrl;

return this;
}

public MessagesApi build() {
return new Retrofit.Builder()
.client(new OkHttpClient.Builder().build())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(baseUrl)
.build()
.create(MessagesApi.class);
}
}
}
}

运行测试时显示错误:

Oct 17, 2018 5:58:57 PM okhttp3.mockwebserver.MockWebServer$2 execute
INFO: MockWebServer[60271] starting to accept connections
Oct 17, 2018 5:58:57 PM okhttp3.mockwebserver.MockWebServer$2 acceptConnections
INFO: MockWebServer[60271] done accepting connections: Socket closed
Oct 17, 2018 5:58:57 PM okhttp3.mockwebserver.MockWebServer$2 execute
INFO: MockWebServer[60272] starting to accept connections
Exception in thread "MockWebServer" java.lang.NoSuchFieldError: H2_PRIOR_KNOWLEDGE
at okhttp3.mockwebserver.MockWebServer$3.processConnection(MockWebServer.java:487)
at okhttp3.mockwebserver.MockWebServer$3.execute(MockWebServer.java:442)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Oct 17, 2018 5:59:07 PM okhttp3.mockwebserver.MockWebServer$2 acceptConnections
INFO: MockWebServer[60272] done accepting connections: Socket closed

java.net.SocketTimeoutException: timeout

最佳答案

似乎是 3.11.0 版本引入了这个问题

https://github.com/spring-projects/spring-security/issues/5570

关于android - 尝试使用 MockWebServer 进行测试时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com