Idling Resources
Espresso needs to know when your app is idle. Register IdlingResources for async operations.
CountingIdlingResource
java
// In your production code (e.g. Repository or ViewModel)
public class MyRepository {
public static final CountingIdlingResource idlingResource =
new CountingIdlingResource("NetworkCalls");
public void fetchData() {
idlingResource.increment();
apiService.getData().enqueue(new Callback<>() {
@Override
public void onResponse(Call<Data> call, Response<Data> response) {
idlingResource.decrement();
// handle response
}
@Override
public void onFailure(Call<Data> call, Throwable t) {
idlingResource.decrement();
}
});
}
}Register in test
java
@Before
public void registerIdlingResource() {
IdlingRegistry.getInstance().register(MyRepository.idlingResource);
}
@After
public void unregisterIdlingResource() {
IdlingRegistry.getInstance().unregister(MyRepository.idlingResource);
}
// Now Espresso waits automatically for network calls to complete