J'ai mis en œuvre un fournisseur de contenu qui récupère les données d'un service installé sur réseau.
Le fournisseur de contenu prend les paramètres requis des préférences partagées (informations d'identification de l'utilisateur, nom de l'application, etc.) i Utilisez le test de l'unité pour ce fournisseur de contenu: P>
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)
...
3 Réponses :
Vous devez injecter un contexte code> code> qui s'étend et ceci est mockcontext code> en utilisant androidtesCase.setContext () et remplace au moins
getpackagename () code> getSharedpreferences () CODE> Ensuite, la solution consiste à remplacer la configuration
() code> ne pas appeler la super méthode. P>
resolverrenamingmockcontext code>: p>
Injecter le contexte est un problème principal. Je n'ai pas trouvé de moyen d'injecter le contexte
Il suffit d'étendre androidtesCase code> au lieu de
ProvidertestCase2 code> et utilisez
getcontext () code> p>
Vous pouvez refacturer votre fournisseur de contenu pour appuyer toutes les utilisations des préférences partagées dans une classe Le Pendant le test, vous pouvez injecter une implémentation spéciale par exemple, dans myHelper code>.
MyHelper code> MyHelper code> peut utiliser des préférences partagées beaucoup comme vous " Reblez-le maintenant et renvoie les valeurs dont vous avez besoin via des getters. p>
myHelper code>, une utilisation qui n'utilise pas de préférences partagées. Peut-être que cela s'appelle
testhelper code> il renvoie simplement des constantes définies par les tests. P>
rechercheProvidertest code>: p>