我正在尝试为我的 android 项目编写测试类,但在填充列表视图时遇到了一些问题。
我的活动使用 Intents 提供的值对应用程序数据库执行请求:
final String[] projection = {
...
};
final String[] selectionArgs={
String.valueOf(intent_param_1),
String.valueOf(intent_param_2)
};
final String selection = //.... ;
vAdapter = new CustomCursorAdapter(this, R.layout.da_row, null, from, to,0);
mListView = new LoaderUtils(vAdapter, projection, selection, selectionArgs, this, uri, null).populateListView(mListView);
LoaderUtils 类实现了LoaderCallbacks,populateListView 方法使用了一个CursorLoader 将DB 数据加载到适配器,并绑定到我的ListView。运行我的应用程序时它工作正常,但是当我尝试实现测试用例时,我遇到了一些问题。
@Override
protected void setUp() throws Exception {
super.setUp();
Intent i = new Intent();
i.putExtra("intent_param_1", 1);
i.putExtra("intent_param_2", 1);
setActivityIntent(i);
mActivity = getActivity();
listeActivites = (ListView)mActivity.findViewById(R.id.listview);
adapter = (CustomCursorAdapter) listeActivites.getAdapter();
}
public void testInit(){
Cursor c = adapter.getCursor();
//...
}
当我执行我的 testInit 时,适配器返回的光标是空的,而当我使用模拟器“真正”运行我的应用程序时它不是。
问题可能是我的 Intent 初始化错误,或者测试用例不允许使用 Cursor Loaders?因此,如果有人能指出我做错了什么,将不胜感激。谢谢!