Эспрессо не ждет IdlingResource - PullRequest
       15

Эспрессо не ждет IdlingResource

0 голосов
/ 17 апреля 2019

Я использую Espresso для проверки пользовательского интерфейса моего приложения. Приложение использует модификацию для отправки HTTP-запросов на сервер. Я пытаюсь использовать JakeWharton/okhttp-idling-resource, чтобы убедить Эспрессо ждать этих запросов. Но похоже, что эспрессо игнорирует эти попытки и просто завершает тестирование без ожидания.

Мой тестовый класс:

@BeforeClass
public static void initClass() {
    // register idling resource for retrofit callbacks
    // dummy call for service will initialize http client
    RESTConnection.getService();
    OkHttpClient client = RESTConnection.getClient();

    idlingResource = CustomOkHttp3IdlingResource.create(
            "OkHttp", client);
    IdlingRegistry.getInstance().register(idlingResource);
}

@Test
public void idlingResourceTest() {
    ActivityTestRule<IdlingResourceTestActivity> mActivityRule = new ActivityTestRule<>(IdlingResourceTestActivity.class, true, true);
    mActivityRule.launchActivity(new Intent());

    onView(withId(R.id.text)).perform(click());
    onView(withId(R.id.text)).check(matches(withText("OK")));
}

Тестирование:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_idling_resource_test);

    //button = findViewById(R.id.button);
    textView = findViewById(R.id.text);

    textView.setOnClickListener(new View.OnClickListener() {
                                  @Override
                                  public void onClick(View view) {
                                      test();
                                  }
                              });
}

public void test() {
    Call<Models.PlainResponse> responseCall = RESTConnection.getService().idlingResourceTest(15);
    responseCall.enqueue(new Callback<Models.PlainResponse>() {
        @Override
        public void onResponse(Call<Models.PlainResponse> call, Response<Models.PlainResponse> response) {
            textView.setText("OK");
        }

        @Override
        public void onFailure(Call<Models.PlainResponse> call, Throwable t) {

        }
    });
}

Я также использую пользовательскую версию OkHttp3IdlingResource, потому что текущая официальная версия не поддерживает androidx. Поэтому я просто создаю копию и изменяю импорт. Я неправильно использую ресурс холостого хода?

...