2010-10-12 26 views
9

J'ai un code java (compile joliment pour Android) dans un projet de bibliothèque (LIB) que je veux utiliser dans un autre projet Android (A).Android - Junit - Projet testé utilise pot externe

Comme le code de LIB est peu susceptible de changer beaucoup, j'ai opté pour l'ajouter comme un pot à A. Cela fonctionne très bien.

J'ai un autre projet qui est un projet d'instrumentation Android, testant le premier projet Android (B).

donc ce que nous avons maintenant un LIB y compris comme un pot externe, et le test B A.

Le problème commence quand je veux accéder à partir du code écrit en B LIB. De ce que je vois, à moins que j'ajoute LIB comme un jar externe à B, il refuse de compiler (c'est-à-dire qu'il ne peut pas accéder au code dans le jar LIB qui est inclus dans A).

Je suis réticent à ajouter LIB comme un pot externe à B parce que: 1. Il ne se sent pas bien, et 2. Lors de l'exécution des tests, il échoue avec:

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

J'ai trouvé Mike's question , mais sa solution ne couvre que la compilation en utilisant un script ant, et je préfère actuellement utiliser l'IDE Eclipse pour ce projet.

Une idée comment puis-je résoudre ce problème?

+2

Résolu en suivant [Cet article de blog] (http://dtmilano.blogspot.com/2009/12/android-testing-external-libraries.html). Il semble que je devrais avoir _exported_ LIB de A, pour le rendre accessible depuis B. –

+0

Cela a aidé. J'ai exporté les dépendances Android à partir du projet principal (le jar était dans le dossier libs, donc il n'était pas possible de l'exporter directement), et dans le projet de test a également dû vérifier le projet principal. Maintenant ça marche. – Ixx

Répondre

1

(Pour retirer cette question du filtre "Unanswered" ...)

La solution est décrite ici:

Android Testing: External libraries

Le LIB doit être exporté de A pour le rendre accessible à partir de B.

+0

J'ai d'abord répondu à ma question, mais ma réponse a été convertie en commentaire par quelqu'un dans le système StackOverflow, ce qui m'a fourni un lien vers la FAQ. Je suppose que le message était que ma réponse ne constitue pas une réponse appropriée, car il s'agit principalement d'une référence au lien externe. –

+0

Hmm. C'est suffisant. Je comprends leur logique, mais seulement si le système permettait également de supprimer de telles questions du filtre "Sans réponse" en même temps. Sinon, il est laissé dans les limbes pour toujours. : - / – DreadPirateShawn