【问题标题】:Running test with MockWebServer always call the failure call back (Connection Exception)使用 MockWebServer 运行测试总是调用失败回调(连接异常)
【发布时间】:2019-01-27 06:54:15
【问题描述】:

我正在运行模拟 Web 服务器来测试 REST API 调用,当活动启动并启动 mockWebserver 并执行 API 调用时,我使用 OKHTTP v-3.10.0 和 Retrofit 2.3.0 拒绝连接

活动测试代码:

 @Rule
    public ActivityTestRule<STBUpgradeActivity> mActivityRule = new ActivityTestRule<>(STBUpgradeActivity.class, false, false);

    private MockWebServer server;

    @Before
    public void setUp() throws Exception {

        super.setUp();
        server = new MockWebServer();
        server.start();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        String serverUrl = server.url("/").toString();
        EnvConfig.WEB_API_SIT = serverUrl;
    }

    @Test
    public void testPageContentIsShown() throws Exception {
        String fileName = "stb_upgrade_page_content_200.json";
        server.enqueue(new MockResponse()
                .setResponseCode(200)
                .setBody(RestServiceTestHelper.getStringFromFile(getInstrumentation().getContext(), fileName)));

        Intent intent = new Intent();
        mActivityRule.launchActivity(intent);

        onView(withId(R.id.button_upgrade)).check(matches(isDisplayed()));
        onView(withText("New residential subscribers and standard install only. If Sports is a part of your package")).check(matches(isDisplayed()));
    }

======= RestAPI 客户端

 private Retrofit getClient() { 
        retrofit = new Retrofit.Builder()
                .baseUrl(WEB_API_HOST)
                .addConverterFactory(GsonConverterFactory.create())
                .client(getHttpClient())
                .build();

        return retrofit;
    }

【问题讨论】:

    标签: android retrofit retrofit2 okhttp3 mockwebserver


    【解决方案1】:

    将设置代码更改为

     @Before
        public void setUp() throws Exception {
    
            super.setUp();
            server = new MockWebServer();
            server.start(8080);
            injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        }
    

    将 Retroft Base URL 设置为

    private Retrofit getClient() {
            retrofit = new Retrofit.Builder()
                    .baseUrl("http://localhost:8080/")
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(getHttpClient())
                    .build();
    
            return retrofit;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多