web-dev-qa-db-fra.com

Android Plugin Eclipse: Instrumentation Test Runner non spécifié

J'obtiens cette erreur lorsque j'essaie d'exécuter des tests unitaires à partir d'Eclipse avec un projet Android. La liste des exécuteurs de tests d'instrumentation est vide dans les préférences Android Android.

[2009-06-17 23:57:51 - MyApp] ERREUR: l'application ne spécifie pas d'instrumentation Android.test.InstrumentationTestRunner ou ne déclare pas uses-library Android.test.runner

Il est également énervant de penser que, comme j'ai essayé d'exécuter un test unitaire une fois, c'est ce que je veux toujours faire.

65

Dans le Run Configuration vous avez peut-être Android JUnit Test, s'il y a de nouvelles entrées de configuration de lancement à l'intérieur, supprimez-la puis exécutez votre application, elle s'exécutera.

REMARQUE - Il s'agit probablement de la solution si vous avez essayé d'exécuter le scénario de test avant d'ajouter les lignes correctes au manifeste, comme décrit dans la réponse de Josef. Si vous avez fait cela, supprimez la configuration (qui se plaindra qu'aucun lanceur de test d'instrumentation n'a été spécifié dans son en-tête), puis exécutez-le en tant que Android Junit Test à nouveau et il créera un configuration valide reprenant les éléments corrects que vous avez ajoutés au manifeste (voir la réponse de Josef pour cela).

59

Vous manquez probablement le uses-library et instrumentation nœuds dans votre AndroidManifest.xml:

<manifest ...>
    <application ...>
        <!-- ... -->
        <uses-library Android:name="Android.test.runner" />
    </application>
    <instrumentation Android:name="Android.test.InstrumentationTestRunner"
        Android:targetPackage="your.package"
        Android:label="your tests label" />
</manifest>
111
Josef Pfleger

Une chose que j'ai remarquée dans cette discussion qui pourrait faire trébucher certaines personnes, c'est que vous devez vous assurer que l'élément "instrumentation" dans votre manifeste est un enfant de "manifeste" et non "d'application". (Les exemples ici sont corrects, mais c'est facile à mélanger.)

http://developer.Android.com/guide/topics/manifest/instrumentation-element.html

Si vous placez votre matériel d'instrumentation dans l'application, il ne sera pas récupéré, et vos choix dans le plugin Eclipse ADT pour runner d'instrumentation peuvent être vides. (Mais aucune erreur n'est levée ou affichée, etc.)

18
Charlie Collins

Faites juste un clic droit sur votre classe de test depuis Eclipse IDE et cliquez sur "Exécuter en tant que". Après cela, sélectionnez "exécuter la configuration" qui lancera une fenêtre de configuration dans Eclipse et vous devez cliquer sur le bouton radio à côté de "Instrumentation Runner" et sélectionnez l'Instrumentation Runner dans le menu déroulant. Cliquez maintenant sur Appliquer puis sur Exécuter. Je pense que cela résoudra votre problème.

Merci, Smruti

9
user190362

Ce n'est pas dans votre code, c'est juste qu'Eclipse est un petit buggy. Dans vos configurations d'exécution, il pourrait essayer d'exécuter un test jUnit, mais sélectionnez Exécuter l'application et cette erreur disparaîtra.

2
pier shaw

En plus de vous assurer que les éléments ci-dessous sont déclarés dans le manifeste de votre application de test, vérifiez dans la configuration d'exécution que le champ "Runner d'instrumentation" est défini sur

"com.google.Android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner". 

C'est ce que j'ai rencontré en découvrant pourquoi je ne courrais pas.

Manifeste:

<instrumentation Android:name="Android.test.InstrumentationTestRunner"
 Android:targetPackage="your.package"
 Android:label="your tests label" />

 and...

<uses-library Android:name="Android.test.runner" />
1
Yoong

Le problème est que lorsque vous avez créé le projet, vous auriez eu un AVD, donc cette configuration serait manquante. Ma façon suggérée est d'abord de créer l'AVD puis de créer le Android :).

Si vous auriez déjà créé le projet et si vous n'avez pas beaucoup de code que vous avez écrit, je suggère de le supprimer et d'en créer un nouveau.

0
Krishna Anisetty