okir
rafaeltoledo
28
Visit GitHub RepoTesting

OkHttp Idling Resource

A helper class that implements both an Espresso IdlingResource and an OkHttp 2 and 3 Interceptors.

Build Status Android Arsenal

Usage

Just create an instance of the desired implementation,

@RunWith(AndroidJunit.class)
public class MyEspressoTest {

    private OkHttp3IdlingResource okir = new OkHttp3IdlingResource();
}

register it on Espresso,

    @Before
    public void setUp() {
        Espresso.registerIdlingResources(okir);
    }

    @After
    public void tearDown() {
        Espresso.unregisterIdlingResources(okir);
    }

add it to your OkHttpClient and replace it on your production code.

    ...
    @Before
    public void setUp() {
        Espresso.registerIdlingResources(okir);
        OkHttpClient client = ApiCaller.getClient().newBuilder()
                .addInterceptor(okir)
                .build();
        ApiCaller.setClient(client);
    }

For a working example, check the sample folder.

It's recommended to annotate your setter method with @VisibleForTesting to avoid the accidental change on production code. Another way to do this is through the Java's reflection API.

Customization

For some cases (e.g., using the OkHttpClient instance for both Retrofit and Picasso), you only want to wait for some URLs. If you need this behavior, just pass the URLs you want to wait in the constructor.

// I just want to wait for requests to Github's API.
OkHttp3IdlingResource okir = new OkHttp3IdlingResource("https://api.github.com");

It's highly recommended to mock your requests when testing. A great solution is to use Square's MockWebServer

Download

The library is available on JCenter. Add the library as an Android Test dependency:

dependencies {
    ...
    androidTestCompile 'net.rafaeltoledo.okir:library:0.0.1@aar'
}

License

Copyright 2016 Rafael Toledo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Become a better Android Developer
Millions of developers are learning at MindOrks

Online Training Program

Featured Blogs

Our Team

MindOrks is Certainly one of the best online blog to stay on top of all the Android development news, coding and design patterns. Finally a blog I can count on to keep myself updated with latest and greatest things happening in Android world.

Vipul Shah
Android Developer
Microsoft

Become Pro in Android by watching videos

OUR LEARNERS WORK AT