Question

Je suis en train d'écrire un projet de bibliothèque Android se basant sur la classe Android Bitmap (appelez-le AndroindLib) qui ne contient que la classe d'utilité (pas d'activité). J'ai essayé de le tester en utilisant Android JUnit, mais il continue se plaindre qui ne peut pas trouver le AnroidLib.apk

Quelle est la bonne façon de tester l'unité Android Library Project?

Était-ce utile?

La solution

Citant la documentation :

"Il y a deux façons recommandées de mettre en place des tests sur le code et les ressources dans un projet de bibliothèque:

  • Vous pouvez configurer un projet de test que les instruments d'un projet d'application qui dépend du projet de bibliothèque. Vous pouvez ensuite ajouter des tests au projet de fonctions spécifiques à la bibliothèque.

  • Vous pouvez configurer un projet d'application standard qui dépend de la bibliothèque et de mettre 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. "

Autres conseils

Dans votre projet de test tout simplement changer le nom du paquet pour que ce soit la même chose que le package de votre bibliothèque. Par exemple, vous avez une bibliothèque dont le paquet est "com.example.lib". Créer un projet de test ciblant votre bibliothèque. Dans le manifeste, vous verrez package="com.example.lib.test" et targetPackage="com.example.lib". Il suffit de changer le paquet de "com.example.lib.test" à "com.example.lib" (congé de targetPackage comme est).

En outre, assurez-vous que la bibliothèque est référencée à votre projet de test PAS dans le chemin Java de construction, mais comme une bibliothèque Android habituelle: Eclipse il doit être démontré que la bibliothèque dans l'onglet Project->Properties->Android, mais < strong> pas dans l'onglet Project->Properties->Java Build Path.

Ensuite, vous exécutez des tests.

http: // www .paulbutcher.com / 2010/09 / android-bibliothèque-projet avec tests étape par étape / permet de décrire le processus nécessaire pour mettre en œuvre la deuxième suggestion dans la réponse de CommonsWare

Par la documentation :

Test d'un module de bibliothèque est identique à tester une application. La principale différence est que la bibliothèque et ses dépendances sont automatiquement inclus en tant que dépendances de l'APK de test. Cela signifie que l'APK de test inclut non seulement son propre code, mais aussi l'AAR de la bibliothèque et toutes ses dépendances. Parce qu'il n'y a pas séparé « application sous test, » la tâche androidTest installe (et désinstalle) que l'APK de test. Lors de la fusion de plusieurs fichiers manifestes, Gradle suit l'ordre de priorité par défaut et se fond dans manifeste principal de l'épreuve APK manifeste de la bibliothèque.

NOTE: Cette solution est basée sur l'utilisation d'Eclipse Indigo (3.8.2) et pourraient être mises en œuvre un peu différemment pour un autre IDE, bien que les principes de base seront les mêmes

.

J'ai eu des problèmes similaires et je trouve effectuer les opérations suivantes fonctionne toujours:

( NOTE: Ces instructions sont pour la construction d'un nouveau groupe de projet à partir de zéro Si vous avez déjà construit des parties du groupe de projet, vous devrez peut-être modifier vos projets afin qu'ils se connectent au même. manière. )

  1. Créer un nouveau projet de bibliothèque Android en cochant la case « Est-Library » lors de la création. (Par exemple un projet Android nommé "RemingtonAndroidTools").
  2. Construire le projet de bibliothèque Android et vérifiez qu'il a créé un fichier jar dans le dossier bin. (Par exemple un fichier jar nommé "RemingtonAndroidTools.jar".)
  3. Créer un vide projet Android pour tester l'application Android qui servira une application de test Android. (Par exemple, un projet Android nommé « RemingtonAndroidToolsTestApp »). Vous aurez pas besoin de modifier le code source ou de ressources du projet Test App Android sauf si vous avez quelque chose qui doit être ajouté pour les tests. Beaucoup de choses peuvent être testées sans aucune modification au projet Test App Android. Le projet Test App Android est un pont entre votre projet de bibliothèque Android et le projet Junit Android qui rend les tests du projet Bibliothèque Android via Android Junit possible.
  4. Allez dans l'onglet Bibliothèque de chemin de génération Java pour le projet Test App Android ( "RemingtonAndroidToolsTestApp" dans cet exemple).
  5. Ajoutez le fichier jar ( "RemingtonAndroidTools.jar" dans cet exemple) du Projet Bibliothèque Android (les "RemingtonAndroidTools" dans cet exemple) via le bouton "Ajouter des fichiers JAR ...".
  6. Créer un nouveau projet de test Android (par exemple « RemingtonAndroidToolsTester ») qui servira de bibliothèque Android Tester et sélectionnez le projet Test App Android ( « RemingtonAndroidToolsTestApp » dans cet exemple) comme cible.
  7. Allez dans l'onglet Bibliothèque de chemin de génération Java pour le projet de bibliothèque Android Tester ( « de RemingtonAndroidToolsTester » dans cet exemple).
  8. Ajoutez le fichier jar ( "RemingtonAndroidTools.jar" dans cet exemple) du Projet Bibliothèque Android (les "RemingtonAndroidTools" dans cet exemple) via le bouton "Ajouter des fichiers JAR ...".
  9. Trouvez le dernier dossier de votre package Android dans le projet de bibliothèque Android Tester ( « danny.remington.remington_android_tools_test_app.test » par exemple) et ajouter une classe de test ( « MainActivityTest », par exemple) qui hérite de ActivityInstrumentationTestCase2.
  10. Modifier la classe de test ( "TestActivityTest" dans cet exemple) d'utiliser l'activité (par exemple "TestActivity") de l'App test Android ( "RemingtonAndroidToolsTestApp" dans cet exemple) comme paramètre pour ActivityInstrumentationTestCase2.
  11. Modifier la classe de test ( « TestActivityTest » dans cet exemple) et de créer un constructeur par défaut qui effectue un appel à super (classe) et le passage dans la classe de l'App test Android ( « TestActivity.class » par exemple).

Vous devriez finir avec trois projets (Android Library, Test App Android, Android Library Tester) qui ressemblent à ceci:

entrer image description ici

entrer image description ici

entrer image description ici

Vous devriez finir 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 un test que vous voulez. Vous ne aurez pas besoin de faire référence à l'App test Android ( « RemingtonAndroidToolsTestApp » dans cet exemple) plus pour exécuter vos tests à moins qu'ils ont besoin d'accéder à un composant spécifique Android (comme le dossier actif, par exemple). Si vous avez besoin d'accéder à Android spécifiquecomposants vous pouvez le faire en modifiant le Test App Android ( « RemingtonAndroidToolsTestApp » dans cet exemple), puis le référencement via l'instrumentation fournie par l'API standard Android Junit. (Vous pouvez en lire plus à ce sujet ici: http://developer.android.com/tools /testing/testing_android.html )

Si vos classes utilitaires ne dépendent pas de code spécifique Android, vous pouvez simplement utiliser des tests standards unitaires JUnit. Pas besoin d'utiliser les versions Android.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top