J'écris un projet de bibliothèque Android basé sur la classe Bitmap Android (appelez-le AndroindLib) qui ne contient que la classe utilitaire (aucune activité). J'ai essayé de le tester en utilisant Android JUnit, mais il continue de se plaindre de ne pas trouver le AnroidLib.apk
Quelle est la bonne façon de tester un projet de bibliothèque Android?
Réponses:
Citant la documentation :
"Il existe deux méthodes recommandées pour configurer des tests sur le code et les ressources dans un projet de bibliothèque:
Vous pouvez configurer un projet de test qui instrumente un projet d'application qui dépend du projet de bibliothèque. Vous pouvez ensuite ajouter des tests au projet pour les fonctionnalités spécifiques à la bibliothèque.
Vous pouvez configurer un projet d'application standard qui dépend de la bibliothèque et placer l'instrumentation dans ce projet. Cela vous permet de créer un projet autonome contenant à la fois les tests / instrumentations et le code à tester. "
la source
Dans votre projet de test, modifiez simplement le nom du package afin qu'il soit le même que celui de votre bibliothèque. Par exemple, vous avez une bibliothèque dont le package est
"com.example.lib"
. Créez un projet de test ciblant votre bibliothèque. Dans le fichier manifeste, vous verrezpackage="com.example.lib.test"
, ettargetPackage="com.example.lib"
. Changez simplement le paquet de "com.example.lib.test" à "com.example.lib" (targetPackage
laissez tel quel ).Assurez-vous également que la bibliothèque est référencée à votre projet de test PAS dans le chemin de construction Java, mais comme une bibliothèque Android habituelle: dans Eclipse, elle doit être affichée comme bibliothèque dans
Project->Properties->Android
tab, mais pas dansProject->Properties->Java Build Path
tab.Ensuite, exécutez vos tests.
la source
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ aide à décrire le processus nécessaire pour implémenter la deuxième suggestion dans la réponse de CommonsWare
la source
Selon la documentation :
Le test d'un module de bibliothèque revient au même que le test d'une application. La principale différence est que la bibliothèque et ses dépendances sont automatiquement incluses en tant que dépendances de l'APK de test. Cela signifie que l'APK de test comprend non seulement son propre code, mais également l'AAR de la bibliothèque et toutes ses dépendances. Comme il n'y a pas d '"application testée" distincte, la tâche androidTest installe (et désinstalle) uniquement l'APK de test. Lors de la fusion de plusieurs fichiers manifestes, Gradle suit l'ordre de priorité par défaut et fusionne le manifeste de la bibliothèque dans le manifeste principal de l'APK de test.
la source
REMARQUE: Cette solution est basée sur l'utilisation d'Eclipse Indigo (3.8.2) et pourrait devoir être implémentée légèrement différemment pour un autre IDE bien que les principes de base soient les mêmes.
J'ai eu des problèmes similaires et j'ai trouvé que faire ce qui suit fonctionne toujours:
( REMARQUE: ces instructions concernent la création d'un nouveau groupe de projets à partir de rien. Si vous avez déjà créé des parties du groupe de projets, vous devrez peut-être modifier vos projets afin qu'ils se connectent de la même manière. )
Vous devriez vous retrouver avec trois projets (bibliothèque Android, application de test Android, testeur de bibliothèque Android) qui ressemblent à ceci:
Vous devriez vous retrouver avec une classe pour tester votre bibliothèque Android qui ressemble à ceci:
Vous pouvez ensuite ajouter le test de votre choix. Vous n'aurez pas besoin de référencer l'application de test Android («RemingtonAndroidToolsTestApp» dans cet exemple) pour exécuter vos tests à moins qu'ils ne nécessitent l'accès à un composant spécifique à Android (comme le dossier Assets, par exemple). Si vous avez besoin d'accéder à des composants spécifiques à Android, vous pouvez le faire en modifiant l'application de test Android ("RemingtonAndroidToolsTestApp" dans cet exemple), puis en la référençant via l'instrumentation fournie par l'API Junit Android standard. (Vous pouvez en savoir plus à ce sujet ici: http://developer.android.com/tools/testing/testing_android.html )
la source
Si vos classes ulitiy ne dépendent d'aucun code spécifique à Android, vous pouvez simplement utiliser des tests unitaires JUnit standard. Pas besoin d'utiliser les versions Android.
la source