से getSharedPreferences() को कॉल करते समय असमर्थितऑपरेशन अपवाद, मैंने सामग्री प्रदाता को लागू किया है जो नेटवर्क पर स्थापित सेवा से डेटा पुनर्प्राप्त करता है। सामग्री प्रदाता साझा वरीयताओं से आवश्यक पैरामीटर (उपयोगकर्ता क्रेडेंशियल ऐप्लिकेशन का नाम, आदि)यूनिट परीक्षण
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 में साझा प्राथमिकताओं को कैसे पास किया जाए? यदि मुझे सामग्री प्रदाता परीक्षण के दौरान संदर्भ की आवश्यकता है तो क्या मुझे अन्य दृष्टिकोण का उपयोग करना चाहिए?
संदर्भ इंजेक्शन एक मुख्य समस्या है। मुझे संदर्भ इंजेक्ट करने का कोई तरीका नहीं मिला – Glaxalg