2015-03-20 1 views
5

Je suis en train d'écrire des tests junit sur le projet android en utilisant le nouveau support de test unitaire http://tools.android.com/tech-docs/unit-testing-support.Android support de test unitaire ne fonctionne pas dans les modules de la bibliothèque Android

Alors que les tests unitaires s'exécutent parfaitement sur le module 'com.android.application', ils échouent toujours sur les modules 'com.android.library'. Cela n'a pas été documenté dans http://tools.android.com/tech-docs/unit-testing-support. Je me demande donc si je suis le coupable.

Quand j'écris ces tests sur les modules de la bibliothèque, les tests ne peuvent pas trouver les classes sur le module et donne toujours des erreurs suivantes:

package does not exist 

error: cannot find symbol 

Le support de test unitaire android est en phase expérimentale en ce moment, mais il est il y a une solution à cela.

MISE À JOUR

J'ai ajouté ce numéro à Android Tracker https://code.google.com/p/android/issues/detail?id=161038

+0

Quelle tâche progressive utilisez-vous? Pouvez-vous ajouter une sortie de journal de construction gradle? J'ai des tests de travail dans un module de bibliothèque avec la même configuration que pour le module d'application. –

+0

Merci pour l'aide Kriill Boyashinov. Je n'ai pas changé de tâches dans le module de la bibliothèque android. –

Répondre

7

Il ressemble à la tâche de compiler les tests unitaires ne dépend pas de la tâche de compiler le code de la bibliothèque. Les fixes suivants pour moi:

afterEvaluate { 
    tasks['assembleDebugUnitTest'].dependsOn(tasks['assembleDebug']) 
} 

je lance les tests à l'aide

./gradlew testDebug 

Si vous ne voulez pas modifier votre build.gradle, spécifier manuellement la tâche assembleDebug sur la ligne de commande doit également faire l'astuce:

./gradlew assembleDebug testDebug 
+0

C'est absolument le problème.Une solution aussi simple! –

+0

Cela corrige des références aux classes de bibliothèque, mais n'aide pas à référencer "R". – FishStix

2

Dans mon projet de bibliothèque Android J'ai aussi échoué à obtenir les tests. Ce que j'ai fait était de créer une application de test qui utilise la bibliothèque et écrit des tests dans l'application qui appelle les méthodes de la bibliothèque. Ce n'est peut-être pas la solution idéale, mais c'est la façon dont nous avons réussi à faire fonctionner cette solution.

1

Jetez un oeil ici https://github.com/nenick/AndroidStudioAndRobolectric

Il vous pouvez exécuter des tests unitaires sur les bibliothèques et les saveurs. Et non, vous n'avez pas besoin d'utiliser Robolectric comme indiqué Gaurav Vashisth. Tu peux si tu veux.

Here is an example of JUnit test in a library module

+0

Robolectric est vieux. –

+0

Si vous aviez regardé l'exemple, vous auriez vu que vous n'avez pas besoin de Robolectric et vous pouvez aussi lancer des tests JUnit. https://github.com/nenick/AndroidStudioAndRobolectric/blob/library/core/src/test/java/com/example/core/SimpleUnitCoreTest.java – Niklas

+0

Il n'existe aucun module de bibliothèque Android dans ce référentiel. –