Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用robolectric和mockito在android中进行单元测试_Android_Unit Testing_Mockito_Retrofit_Robolectric - Fatal编程技术网

使用robolectric和mockito在android中进行单元测试

使用robolectric和mockito在android中进行单元测试,android,unit-testing,mockito,retrofit,robolectric,Android,Unit Testing,Mockito,Retrofit,Robolectric,我面临着如何编写改装测试代码的问题。代码如下 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

我面临着如何编写改装测试代码的问题。代码如下

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(--------) {
    }
}
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);
}
}
public class BirdClient{
private BirdService mAPIService;

public BirdClient(BirdService service) {
   assert service != null;
   mAPIService = service;
}
public void getBirdList(final Callback<List<Bird>> delegate) {
  ----------------------
}
}
BirdClient.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);
}
}
public class BirdClient{
private BirdService mAPIService;

public BirdClient(BirdService service) {
   assert service != null;
   mAPIService = service;
}
public void getBirdList(final Callback<List<Bird>> delegate) {
  ----------------------
}
}
公共类BirdClient{
私人鸟类服务;
公共鸟类客户(鸟类服务){
断言服务!=null;
mAPIService=服务;
}
public void getBirdList(最终回调委托){
----------------------
}
}
java

public interface BirdService {

   @GET(URL)
   void getBirdList(Callback<List<Bird>> objectManager);
}
公共接口鸟类服务{
@获取(URL)
void getBirdList(回调对象管理器);
}

我想编写测试代码,以测试在成功回调getBirdList()后列表中的项数是否等于15(例如),如MainActivity.java所示。另外,我正在使用Robolectric和Mockito库进行测试。我从星期二开始尝试写。请帮助。

我建议您不要测试对服务器的实际请求是否正常工作,因为服务器响应可能会更改,并且在运行测试时您可能没有internet,但请使用一些模拟数据进行测试

下面是一个例子,他将mockito与单元测试api功能的改造结合使用:


祝你好运

我已经看到了这个链接。他实现改造代码的方式与我的不同(例如,他使用的是setApi(),而我不是,这个setApi()在编写测试代码中起着至关重要的作用)。不幸的是,我也不能用模拟数据编写测试代码。如果您可以使用模拟数据编写测试代码,请提供帮助。谢谢。