J'essaye donc notre studio Android et teste un projet qui a fonctionné dans Eclipse. J'ai tout compilé et l'application se lancera très bien, mais je ne parviens pas à faire fonctionner mes tests unitaires. Je les ai finalement compilées en ajoutant le dossier lib de mes applications en tant que dépendance, mais je ne pense pas que ma configuration d’exécution est correcte, car chaque fois que j’effectue mes tests, le message d'erreur s'affiche.
Installing <packagename>
DEVICE Shell COMMAND: pm install -r "/data/local/tmp/<packagename>"
pkg: /data/local/tmp/<packagename>
Success
Running tests
Test running started
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/Android.test.InstrumentationTestRunner}
Empty test suite.
Edit: Pour tous les nouveaux arrivants, l’état d’Android Studio a beaucoup changé depuis que j’ai posté cette question pour la première fois, mais de nombreuses personnes utiles ont continué à publier leur solution à cette erreur. Je conseillerais de trier par actif et de vérifier les réponses les plus récentes en premier.
Si vous avez un testInstrumentationRunner défini dans votre build.gradle
comme ceci:
Android {
defaultConfig {
testInstrumentationRunner "com.google.Android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
assurez-vous que, dans la fenêtre de configuration d'exécution, vous utilisez exactement le même "Runner d'instrumentation spécifique" dans la configuration d'exécution de votre Android Studio/IntelliJ pour votre test.
Dans mon cas, la solution était:
Explication et solution
Cette erreur " Impossible de trouver l'instrumentation " apparaît si targetPackage déclaré dans le manifeste de l'application de test est différent du package déclaré dans le manifeste de l'application en cours de test:
Application en cours de test:
<manifest package="com.example.appbeingtested" … >
Application de test:
<instrumentation
Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.example.appbeingtested" … />
J'ai résolu ce problème en changeant
Android.test.InstrumentationTestRunner
dans
com.Android.test.runner.MultiDexTestRunner
dans EditConfigurations -> onglet Instrumentation Runner spécifique (facultatif).
En fait, comme mon application utilise MultiDex, je dois également changer le programme d’exécution de test en MultiDexTestRunner.
METTRE À JOUR:
En tant que commentaire @dan, InstrumentationTestRunner
est obsolète. Utilisez plutôt AndroidJUnitRunner
.
Dans mon cas, les configurations Run/Debug étaient erronées.
Une solution:
Aller à la configuration Run/Debug
Run -> Edit Configurations ...
Configurez un test Android pour votre classe de test
Sélectionnez votre configuration de test Android sur le côté gauche
ou créez-en un nouveau avec l'icône Plus et nommez-le, par exemple. ClassName Test
Sélectionnez le module contenant votre classe de test. Dans le cas le plus simple, la classe de test est dans votre module d'application. Sélectionnez donc app.
Sélectionnez à la ligne suivante votre configuration de test. J'utilise:
Choisissez votre classe de test
Enfin, configurez votre appareil cible et sélectionnez OK.
Ceci ne fonctionne que dans AndroidStudio Version <2.3
Dans mon cas, le mauvais coureur d'instrumentation a été sélectionné.
J'ai corrigé cela en spécifiant le coureur d'instrumentation dans la configuration Run/Debug du test (voir ci-dessous). Là, vous pouvez sélectionner un coureur de la liste.
Vous trouvez les configurations Run/Debug: Run -> Edit Configurations ...
J'ai le même problème que @Iuliia Ashomok et j'ai tout essayé sur Internet.
Toujours pas de chance.
Après 2 jours d’investigation, j’ai trouvé que le problème était créé par le téléphone portable. .V.
À l'origine, j'utilise Xiaomi Mi4i comme périphérique de test (enraciné) et les tests ne peuvent pas être exécutés. Bien sûr, j'ai l'erreur ci-dessous.
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/Android.test.InstrumentationTestRunner}
Cependant, lorsque j'utilise Sony Xperia Z3 (pas de racine), tout fonctionne bien.
Il semble que vous n’ayez pas une bonne structure de projet.
Ouvrez AndroidManifest.xml et vérifiez-le
<instrumentation Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.example.YourClass"
Android:label="Tests for com.example.YourClass"/>
Si NON, ensuite:
MyProject/
AndroidManifest.xml
res/
... (resources for main application)
src/
... (source code for main application) ...
tests/
AndroidManifest.xml
res/
... (resources for tests)
src/
... (source code for tests)
J'ai eu une fois cette erreur. J'utilise les outils SDK en mode CLI. Et l'erreur s'est produite lorsque j'ai lancé 'ant test' dans le projet test. J'ai remarqué plus tard que je n'avais même pas construit et installé le projet de test auparavant! (avec 'ant debug install') Vous devriez donc essayer de vérifier votre configuration en cours d'exécution pour voir si le projet de test a bien été construit avant d'exécuter le test. Dans l’autre cas, Android Studio utilise Gradle. Je ne le connais pas bien, mais essayez de vérifier les paramètres Gradle pour le projet ou le fichier de paramètres Gradle.
Cette réponse va expliquer l'historique des problèmes et résumer tous les paramètres associés.
En gros, il existe 3 emplacements possibles pour les configurations de runner de test d’instrumentation.
Dans EditConfigurations -> onglet Général -> coureur spécifique d'instrumentation (facultatif)
Il existe déjà dans Android Studio 2.2 et une version antérieure. Dans la dernière version, il est déjà supprimé.
Dans le fichier manifeste, le lanceur de test est configuré comme suit.
< instrumentation Android:name="Android.support.test.runner.AndroidJUnitRunner"
Android:targetPackage="com.mytestapp.test"/>
Étant donné que "Android.test.InstrumentationTestRunner" est obsolète dans le niveau 24 de l'API, ce paramètre n'est également pas nécessaire, tant que vous configurez le coureur dans un fichier de niveaux.
Si vous souhaitez conserver ce paramètre, assurez-vous que le nom du coureur doit correspondre à celui que vous avez défini dans le fichier de classe, sinon vous obtiendrez également cette erreur.
Android {
.......
defaultConfig {
.......
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
}
Dans mon cas, dans les mêmes classes, certains cas de test sélectionnaient le bon exécuteur de test (Android.support.test.runner.AndroidJUnitRunner) défini dans build.gradle et certains cas de test récupéraient Android.test.InstrumentationTestRunner, qui n'était pas défini au moins dans Manifest ou build.gradle ou edit configuration. Idéalement, cela aurait dû être résolu par l'option Sync Project avec l'option Gralde, bien que cela n'ait pas fonctionné.
Enfin, j'ai trouvé un testeur de test incorrect défini par rapport à une méthode dans .idea/workspace.xml
, je l'ai modifié manuellement et le problème a été résolu.
Généralement, nous ne sommes pas censés éditer ce fichier généré par Android Studio, mais pour moi, cela a fonctionné comme dernière option.
Étant donné qu'aucune de ces réponses ne m'a aidé, je voulais partager ma solution à toute personne aussi désespérée que moi. :)
En raison des bibliothèques de test que j'utilisais, je devais activer le support multidex en ajoutant multiDexEnabled true
à ma construction Gradle. Je ne suis pas sûr que le support multidex soit entièrement implémenté (la manière appropriée de le faire a changé depuis la dernière mise en œuvre), mais au final, je n'en ai plus eu besoin et la suppression de cette ligne de ma version a corrigé l'erreur . Mon équipe au travail a eu quelques problèmes de test liés à l'activation de la prise en charge multidex… dans un style Android typique.
Pour moi le problème était d'avoir cette dépendance:
debugCompile 'com.Android.support.test:rules:0.2'
Après l'avoir enlevé, mes tests ont été trouvés et exécutés à nouveau.
Notez que je n'ai pas reçu le message "Impossible de trouver l'instrumentation" mais le message "Aucun test trouvé".
Dans mon cas, le problème était dans l'appareil aussi. D'autres appareils fonctionnaient bien. Une simple désinstallation et réinstallation corrigé.
Il s'est avéré être un problème de retard. Cela a été corrigé automatiquement après avoir attendu un moment en lisant les solutions Internet. J'ai recompilé le code, et cela a fonctionné.