【问题标题】:Unit testing with robolectric and mockito for retrofit in android使用 robolectric 和 mockito 进行单元测试以在 android 中进行改造
【发布时间】:2015-05-21 13:21:53
【问题描述】:

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

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);
}

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

【问题讨论】:

    标签: android unit-testing mockito retrofit robolectric


    【解决方案1】:

    我建议您不要测试对服务器的实际请求是否有效,因为服务器响应可能会发生变化,并且您在运行测试时可能没有互联网,而是使用一些模拟数据进行测试。

    这是一个示例,他将 mockito 与改造一起用于单元测试 api 功能:

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

    祝你好运!

    【讨论】:

    • 我已经看过这个链接了。他实现改造代码的方式与我的不同(例如他使用的是 setApi() 而我不是,这个 setApi() 在编写测试代码)。不幸的是,我也无法使用模拟数据编写测试代码。如果您可以使用模拟数据编写测试代码,请提供帮助。谢谢。
    猜你喜欢
    • 2016-06-15
    • 2016-11-13
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2019-04-27
    相关资源
    最近更新 更多