Я использую 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
. Поэтому я просто создаю копию и изменяю импорт.
Я неправильно использую ресурс холостого хода?