我有一个从互联网下载数据的实用程序类。
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)
答案 0 :(得分:0)
是。在构造函数或setter方法中传递地理编码器。这是实现可测试性的方法。这是一个很好的演讲,解释了为什么你应该这样做:http://youtu.be/RlfLCWKxHJ0