J'écris un Android Library Project basé sur Android classe Bitmap (appelez-le AndroindLib) qui ne contient que la classe utilitaire (pas d'activité). J'ai essayé de le tester) en utilisant Android JUnit, mais il continue de se plaindre qui ne trouve pas le AnroidLib.apk
Quelle est la bonne façon de faire un test unitaire Android Library Project?
Citant la documentation :
"Il existe deux méthodes recommandées pour configurer les 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 qui contient à la fois les tests/instrumentations et le code à tester. "
Dans votre projet de test, changez simplement le nom du package pour qu'il soit identique au package 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 verrez package="com.example.lib.test"
, et targetPackage="com.example.lib"
. Changez simplement le paquet de "com.example.lib.test" en "com.example.lib" (targetPackage
laissez tel quel).
Assurez-vous également que la bibliothèque est référencée dans votre projet de test ET NON dans Java chemin de génération, mais comme d'habitude = Android bibliothèque: dans Eclipse, il doit être affiché comme bibliothèque dans Project->Properties->Android
tab, mais pas dans Project->Properties->Java Build Path
tab.
Ensuite, exécutez vos tests.
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
Par documentation :
Tester un module de bibliothèque équivaut à tester 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 en cours de test" 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.
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 le les principes de base seront les mêmes.
J'ai eu des problèmes similaires et j'ai constaté que les opérations suivantes fonctionnent toujours:
( REMARQUE: ces instructions permettent de créer un nouveau groupe de projets à partir de zéro. Si vous avez déjà créé des parties du groupe de projets, vous devrez peut-être modifier vos projets afin qu'ils connectez-vous de la même manière.)
Vous devriez vous retrouver avec trois projets (Android Library, Android Test App, Android Library Tester) qui ressemblent à ceci:
Vous devriez vous retrouver avec une classe pour tester votre bibliothèque Android qui ressemble à ceci:
package danny.remington.remington_Android_tools_test_app.test;
import Android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_Android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
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 devez accéder à des composants spécifiques de 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 la norme Android API Junit. (Vous pouvez en savoir plus à ce sujet ici: http://developer.Android.com/tools/testing/testing_Android.html )
Si vos classes utilitaires ne dépendent d'aucun code spécifique Android Android, vous pouvez simplement utiliser des tests unitaires JUnit standard. Pas besoin d'utiliser les versions Android Android.