Не удалось протестировать вызовы для реального сервера после имитации mockwebserver на Android?

Сначала я запускаю тестовый вход в систему, который возвращает код состояния 400, а затем второй тест, который входит в систему с использованием реального вызова службы. Тесты ниже:

@Test
public void mock() throws IOException, InterruptedException {
    MockWebServer server = new MockWebServer();
    server.enqueue(new MockResponse().setResponseCode(400));
    server.start();
    NetworkServiceHelper.init(String.valueOf(server.url("/"))); // Change retrofit baseUrl to localhost

    loginWithoutWaiting(username, password);

    server.shutdown();
}

@Test
public void real() {
    NetworkServiceHelper.init(NetworkServiceHelper.DEFAULT_URL); // Change retrofit baseUrl to a real url
    loginWithoutWaiting(username, password);
}

Настоящую службу не вызывают. Сообщение об ошибке EditText говорит

Не удалось пройти аутентификацию: не удалось подключиться к localhost/127.0.0.1:50162.

Вот функция NetworkServiceHelper.init(), которая инициализирует экземпляр Retrofit:

public static synchronized void init(String serverUrl) {

   // Override the GSON date format.
    Gson gson = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
            .create();

    // We want to make the network calls asynchronous, so use createWithScheduler()
    RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());

    // Finally, build the Retrofit client.
    retrofit = new Retrofit.Builder()
            .baseUrl(serverUrl)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .addCallAdapterFactory(rxAdapter)
            .client(buildClient())
            .build();
}

person AccTest    schedule 28.09.2016    source источник


Ответы (1)


убедитесь, что вы лениво вызываете действие следующим образом

@Rule
    public ActivityTestRule<EmergencyMainActivity> mActivityTestRule =
            new ActivityTestRule<>(EmergencyMainActivity.class, true, false);

а затем вызвать действие после настройки сетевого вызова сервера.

person cammando    schedule 01.04.2017