使用对象Geocoder Internaly

时间:2016-02-19 14:47:07

标签: android junit mockito

我有一个从互联网下载数据的实用程序类。

public class MyHelper{
    Context mContext;
    public MyHelper(Context context) {
        mContext = context;
    }

    public List<String> getDataForDate(DateTime dateTime) {
            Geocoder geocoder = new Geocoder(mContext);
        //
       }
}

单元测试

public class MyHelperTest{
    @Mock
    Context context;

    @Test
    public void is_not_empty() {
        MyHelper helper = new MyHelper(context);
        assertTrue("Size", (helper.getDataForDate(DateTime.now()).size() != 0));
    }
}

这会引发异常,因为Geocoder类没有被模拟。

我的问题是如何解决这个问题?

我是否应该将Geocoder对象传递给Helper,如

new MyHelper(context, geocoder)

1 个答案:

答案 0 :(得分:0)

是。在构造函数或setter方法中传递地理编码器。这是实现可测试性的方法。这是一个很好的演讲,解释了为什么你应该这样做:http://youtu.be/RlfLCWKxHJ0