Rajeev Kumar
Rajeev Kumar

Reputation: 59

Unit testing with robolectric and mockito for retrofit in android

I am facing problem how to write test code for retrofit.The codes are as below.

MainActivity.java

import android.os.Bundle;
import java.util.List;
import gallery.com.brandlistview.Bird;
import retrofit.Callback;
import retrofit.client.Response;

public class MainActivity implements Callback<List<Bird>> {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Globals.getRestClient().getBirdClient().getBirdList(this);
    }

    @Override
    public void success(List<Bird> birds, Response response) {
    }

    @Override
    public void failure(--------) {
    }
}

Bird.java

public class Bird {
    private String image_url;
    public String getImage_url() {
        return image_url;
    }
    public void setImage_url(---------) {
        -----------
    }
}

Globals.java

public class globals{
    public static RestClient restClient;

    public static RestClient getRestClient() {
        return restClient; 
    }
    public static BirdClient getBirdClient() {
        return getRestClient().getBirdClient();
    }
}

RestClient.java

public class RestClient{
private BirdClient   mBirdClient;

public RestClient() {
   mBirdClient = new BirdClient(getBirdService());
}

public BirdClient getBirdClient() { return mBirdClient; }

public static BirdService getBirdService() {
   RestAdapter restAdapter = new RestAdapter.Builder()
         .setEndpoint(URL)
         .setLogLevel(RestAdapter.LogLevel.FULL)
         .build();

   return restAdapter.create(BirdService.class);
}
}

BirdClient.java

public class BirdClient{
private BirdService mAPIService;

public BirdClient(BirdService service) {
   assert service != null;
   mAPIService = service;
}
public void getBirdList(final Callback<List<Bird>> delegate) {
  ----------------------
}
}

BirdService.java

public interface BirdService {

   @GET(URL)
   void getBirdList(Callback<List<Bird>> objectManager);
}

I want to write test code to test if the number of items in List is equal to 15(for example) after successful callback of getBirdList() as shown is MainActivity.java . Also, I am using Robolectric and Mockito library for testing. I am trying to write since tuesday .please help.

Upvotes: 2

Views: 2218

Answers (1)

korrekorre
korrekorre

Reputation: 1034

I suggest that you don't test that the actual request to server is working, due to the server response might change and you may not have internet when running test, but test it with some mock data.

Here is an example where he's using mockito together with retrofit to unit-test api functionality:

http://www.mdswanson.com/blog/2013/12/16/reliable-android-http-testing-with-retrofit-and-mockito.html

Good luck!

Upvotes: 2

Related Questions