【发布时间】:2011-03-11 00:32:25
【问题描述】:
我已经实现了从安装在网络上的服务中检索数据的内容提供程序。 内容提供者从共享偏好中获取所需参数(用户凭据、应用程序名称等)
SharedPreferences settings = getContext().getSharedPreferences(NET_PREFS, 0);
我对此内容提供者使用单元测试:
public class ResearchProviderTest extends ProviderTestCase2<MyProvider>{
public ResearchProviderTest() {
super(MyProvider.class, MyProvider.CONTENT_AUTHORITY);
}
public void testInsert() {
ContentValues values = new ContentValues();
values.put(QueryFields.FIELD_QUERY_TEXT, "query" );
Uri newUri = getMockContentResolver().insert(MyProvider.CONTENT_URI, values);
Cursor readMessagesCursor = getMockContentResolver().query(
newUri ,
new String[] { FIELD_SR_TITLE },
null, null, null );
assertTrue("The cursor should contain some entries", readMessagesCursor.moveToFirst());
}
}
在执行单元测试期间。抛出异常:
java.lang.UnsupportedOperationException
at android.test.mock.MockContext.getSharedPreferences(MockContext.java:127)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
at com.company.mobile.android.net.RemoteExecutor.retrieveCredentials(RemoteExecutor.java:171)
at com.company.mobile.android.net.service.Adapter.executeSearch(Adapter.java:33)
at com.company.mobile.android.provider.MyProvider.insert(MyProvider.java:167)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:174)
...
有人知道如何将共享首选项传递给 MockContext 吗?如果在测试 Content Provider 期间需要 Context,我应该使用其他方法吗?
【问题讨论】:
标签: android android-contentprovider