11
votes

Comment tester les fournisseurs de contenu sur Android

Je suis en train de tester mon DB en utilisant ProviderTestCase2 . Je peux voir le test DB créé. À ce titre, je suppose, le fournisseur de contenu testé doit utiliser la base de données de test. Mais dès que je tente tout appel contre le MockContentResolver (ou celui créé avec newResolverWithContentProviderFromSql ), je reçois un UnsupportedOperationException . Ceci est documenté pour le MockContentResolver comme un comportement normal. En tant que tel, je suis un peu incertain sur le but du ProviderTestCase2.

Comment tester vos fournisseurs de contenu?

Merci


0 commentaires

4 Réponses :


3
votes

EXTENDRE PROVETERTESTASE2 pour remplacer GETMOCKCONTRASOLVER () et renvoyer votre propre classe dérivée de MockContentrresolver.

public class MyProviderTestCase2 extends ProviderTestCase2 {
    @Override
    public MockContentResolver getMockContentResolver () {
        return new MyMockContentResolver();
    }
}


0 commentaires

13
votes

Aussi loin que j'ai trouvé, la mise en place du résolveur de contenu simulé n'est pas explicitement nécessaire - je pourrais superviser les cas où il est (peut-être corriger la résolution du fournisseur via Uri, des tours qui ont besoin de corect gettype () fonctionnent), mais pour moi , il suffisait de faire quelque chose comme ceci: xxx


2 commentaires

Il n'y a pas beaucoup de code de code sur la classe ProviderTestCase2 sur Internet. C'est très utile.


Dans Documentation Android , ils recommandent de ne pas utiliser directement votre fournisseur de contenu et passer à travers un résolveur de contenu à la place. Il suffit de lire mon message pour voir un exemple plus adéquat de la manière de tester un fournisseur de contenu.



6
votes

i Ajouter cette entrée, car je pense que cela peut aider les programmeurs à tester leur fournisseur de contenu.

Imaginez que votre fournisseur de contenu est appelé MyProvider et que vous avez une classe de contrat appelée MyProviderContrate définissant certaines constantes. < P> Tout d'abord, vous écrirez une classe d'essai appelée myProviderTestCase qui hérite de proviseurestcase2 . Vous devrez définir un constructeur qui appellera le constructeur super xxx

puis, au lieu d'utiliser directement votre fournisseur (éviter d'utiliser getProvider () Comme les utilisateurs de votre fournisseur de contenu ne l'accédent pas directement), utilisez le getmockcontentresolver () pour obtenir une référence à un résolveur de contenu, puis appelez les méthodes de ce contenu. Résolveur ( Query , Insérer , etc.). Dans le code suivant, je montre comment tester la méthode insert . xxx

alors vous pouvez ajouter autant de méthodes de test que vous le souhaitez, en utilisant un Résolution du contenu au lieu de votre fournisseur de contenu directement, comme cela ferait des utilisateurs de votre fournisseur de contenu.


1 commentaires

Comment pour vous courir Fournisseur d'est? Test d'unité Android Créer une variante ou un test d'instrumentation?



0
votes

[pas directement lié à la question, mais pour une référence future pour quiconque est ici à la recherche de la manière de tester les fournisseurs de contenu dans Android]

Si vous travaillez avec API 28 ou supérieur, FrederestCase2 a été retiré de ClassPath par défaut de SDK Android, vous devez donc raffiner manuellement dans ces classes de votre fichier Build.Gradle. xxx

alors vous pouvez simplement prolonger ProviderTestCase2 dans votre cas de test xxx

Exemple de travail: HTTPS: //github.com/artenes/android-Content-Provider-Test-Sample


0 commentaires