Si vous implémentez un fournisseur de contenu pour stocker et récupérer des données ou rendre les données accessibles à d'autres applications, vous devez tester votre fournisseur pour vous assurer que il ne se comporte pas de manière inattendue. Cette leçon explique comment tester des fournisseurs de contenu. Elle s'applique également aux fournisseurs auxquels vous ne communiquez votre propre application.
Créer des tests d'intégration pour les fournisseurs de contenu
Les fournisseurs de contenu vous permettent d'accéder à des données utilisateur réelles. Il est donc important de tester le fournisseur de contenu dans un environnement de test isolé. Ce vous permet de ne vous exécuter que sur des dépendances de données définies explicitement dans le scénario de test. Cela signifie également que vos tests ne modifient pas les données utilisateur réelles. Pour exemple, vous devez éviter d'écrire un test qui échoue parce qu'il reste des données d'un test précédent. De même, évitez d'ajouter ou de supprimer les coordonnées réelles d'un fournisseur.
Pour tester votre fournisseur de contenu de façon isolée, utilisez le ProviderTestCase2
.
. Cette classe vous permet d'utiliser des classes d'objets fictives Android telles que
IsolatedContext
et MockContentResolver
pour accéder aux fichiers et
les informations de la base de données sans
affecter les données utilisateur réelles.
Votre test d'intégration doit être écrit sous la forme d'une classe de test JUnit 4. Pour en savoir plus sur la création de classes de test JUnit 4 et l'utilisation d'assertions JUnit 4, consultez la section Créer une classe de test unitaire local.
Pour créer un test d'intégration pour votre fournisseur de contenu, vous devez effectuer les opérations suivantes : étapes:
- Créez votre classe de test en tant que sous-classe de
ProviderTestCase2
. - Spécifiez la classe
AndroidJUnitRunner
fournie par AndroidX Test. en tant qu'exécuteur de test par défaut. - Définissez l'objet
Context
à partir de la classeApplicationProvider
. Consultez le ci-dessous pour un exemple.
Kotlin
@Throws(Exception::class) override fun setUp() { super.setUp() context = ApplicationProvider.getApplicationContext<Context>() }
Java
@Override protected void setUp() throws Exception { super.setUp(); setContext(ApplicationProvider.getApplicationContext()); }
Fonctionnement de ProviderTestCase2
Vous testez un fournisseur avec une sous-classe de ProviderTestCase2
. Cette classe de base
étend AndroidTestCase
afin de fournir le framework de test JUnit en tant que
ainsi que des méthodes spécifiques à Android pour tester les autorisations des applications. Les plus
la caractéristique la plus importante de cette classe est son initialisation, qui crée
dans un environnement de test isolé.
Initialisation
L'initialisation est effectuée dans le constructeur de ProviderTestCase2
.
que les sous-classes appellent dans leurs propres constructeurs. ProviderTestCase2
crée un objet IsolatedContext
qui autorise les fichiers
les opérations de base de données, mais bouchons
les autres interactions avec le système Android.
Les opérations de fichiers et de base de données
sont effectuées dans un répertoire
local à l'appareil ou à l'émulateur et possède un préfixe spécial.
Le constructeur crée ensuite un MockContentResolver
à utiliser comme résolveur.
pour le test.
Enfin, le constructeur crée une instance du fournisseur testé. C'est
un objet ContentProvider
normal, mais qui prend tout son environnement
informations de IsolatedContext
. Il est donc limité au travail dans
l'environnement de test isolé. Tous les tests effectués dans la classe du scénario de test s'exécutent
sur cet objet isolé.
Vous exécutez des tests d'intégration pour les fournisseurs de contenu de la même manière que pour les instrumentés. les tests unitaires.
Que faut-il tester ?
Voici quelques consignes spécifiques pour tester les fournisseurs de contenu.
- Tester avec des méthodes de résolveur: même si vous pouvez instancier un fournisseur
objet
dans
ProviderTestCase2
, vous devez toujours effectuer le test avec un objet résolveur en utilisant l'URI approprié. Vous vous assurez ainsi de tester le fournisseur en effectuant la même interaction qu'une application classique. - Tester un fournisseur public sous forme de contrat: si vous souhaitez que votre fournisseur soit
public et disponible pour d'autres applications, vous devez le tester en tant que contrat.
Voici quelques exemples de la façon de procéder:
<ph type="x-smartling-placeholder">
- </ph>
- Effectuez un test avec des constantes que votre fournisseur expose publiquement. Par exemple, regardez pour les constantes qui font référence aux noms de colonnes dans l'une des tables de données du fournisseur. Il doit toujours s'agir de constantes définies publiquement par le fournisseur.
- Testez tous les URI proposés par votre fournisseur. Il se peut que votre fournisseur propose plusieurs URI, chacun faisant référence à un aspect différent des données.
- Testez les URI non valides. Vos tests unitaires doivent appeler
délibérément le fournisseur avec
un URI non valide et recherchez les erreurs. Une bonne conception de fournisseur consiste
IllegalArgumentException
pour les URI non valides.
- Testez les interactions standards avec les fournisseurs: la plupart des fournisseurs proposent six accès
méthodes:
query()
,insert()
,delete()
,update()
,getType()
etonCreate()
Vos tests doivent vérifier que toutes ces méthodes fonctionnent. - Tester la logique métier: si le fournisseur de contenu implémente la logique métier, vous le tester. La logique métier consiste à gérer les valeurs non valides, les calculs arithmétiques, l'élimination ou la combinaison de doublons.