Verileri ağda yüklenen bir hizmetten alan İçerik Sağlayıcısı'nı uygulamamıştım. İçerik sağlayıcı Bu İçeriği sağlayıcı için birim testi kullanmak gerekli paylaşılan tercihlerinden parametreler (kullanıcı kimlik bilgilerini, uygulama adı, vb)DesteklenmeyenOperationException, getSharedPreferences() öğesini birim testten çağırırken
SharedPreferences settings = getContext().getSharedPreferences(NET_PREFS, 0);
alır:
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());
}
}
birim testinin yürütülmesi sırasında. istisnası atılır:
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)
...
herkes MockContext paylaşıldı Tercihler geçmesine biliyor mu? İçerik Sağlayıcıyı test ederken İçeriğe gereksinim duyarsam başka bir yaklaşım kullanmalı mıyım?
bir ana bir sorundur. Bağlamı enjekte etmenin bir yolunu bulamadım – Glaxalg