Robolecsortingc dit “AndroidManifest.xml introuvable”

En essayant de faire fonctionner Robolecsortingc RC3 dans Android Studio, je reçois

Caused by: java.lang.RuntimeException: build/intermediates/bundles/debug/AndroidManifest.xml not found or not a file; it should point to your project's AndroidManifest.xml at org.robolecsortingc.manifest.AndroidManifest.validate(AndroidManifest.java:120) at org.robolecsortingc.manifest.AndroidManifest.getResourcePath(AndroidManifest.java:469) at org.robolecsortingc.manifest.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:475) at org.robolecsortingc.RobolecsortingcTestRunner.createAppResourceLoader(RobolecsortingcTestRunner.java:479) at org.robolecsortingc.RobolecsortingcTestRunner.getAppResourceLoader(RobolecsortingcTestRunner.java:471) at org.robolecsortingc.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:73) at org.robolecsortingc.RobolecsortingcTestRunner.setUpApplicationState(RobolecsortingcTestRunner.java:421) at org.robolecsortingc.RobolecsortingcTestRunner$2.evaluate(RobolecsortingcTestRunner.java:234) 

j’ai essayé

 @Config(manifest = "app/src/main/AndroidManifest.xml", constants = BuildConfig.class, sdk=21) 

et j’ai essayé de définir l’emplacement du manifeste dans mon TestRunner, rien n’a fonctionné. Dans le système de fichiers, je vois que le manifeste est dans

 ./app/build/intermediates/manifests/full/debug/AndroidManifest.xml 

pas à l’endroit où Robolecsortingc le cherche. À un moment donné, le manifeste a simplement été ignoré, puis un problème similaire s’est produit pour les ressources, l’application ou Robolecsortingc ne pouvant pas trouver une ressource brute que mon application utilise. Ceci est dans mon fichier de compilation:

  sourceSets { main { java.srcDirs = ['src/main/java'] resources.srcDirs = ['src/main/res'] } test { java.srcDirs = ['src/test/java', 'src/main/java'] resources.srcDirs = ['src/test/res', 'src/main/res'] } } 

Comment puis-je dire à Robolecsortingc où chercher un manifeste et, plus important encore, où chercher des ressources?

Edit: J’ai vérifié Robolecsortingc à partir de github, je l’ai construit, je l’ai installé dans mon repository local .m2, le fichier de dégradé fait maintenant référence à la construction locale de SNAPSHOT, et je me suis assuré que repo à distance. Ensuite, j’ai copié le RobolecsortingcGradleTestRunner dans mon projet, j’ai modifié les lignes où sont définis les emplacements des fichiers: il ne contenait pas le nom du module. Maintenant ça marche.

Je suppose que vous essayez d’exécuter les tests avec JUnit. Vous pouvez essayer deux choses différentes:

  1. Créez une classe Custom TestRunner, comme illustré ici . Vérifiez la section CustomTestRunner, où vous créez essentiellement un TestRunner qui connaît le bon manifeste à utiliser. Spécifiez vos tests à exécuter avec votre testeur, avec l’annotation @Config .
  2. (Mon choix préféré) Allez dans votre configuration JUnit, Exécuter> Modifier les configurations. Notez la zone de texte ‘Répertoire de travail’. Ajoutez /app (pour OSX et Linux) ou \app (Windows) au chemin écrit dans la zone de texte. Essayez à nouveau et ça devrait marcher.

Même problème sur Android Studio. J’ai résolu ce problème pour modifier la configuration de Unit4. vous pouvez suivre ces choses.

Sur Android Studio.

  1. Modifier les configurations
  2. Dans Junit, vous devez changer le répertoire de travail en $ MODULE_DIR $.

L’important est $ MODULE_DIR $ .

vous pouvez référencer la capture d’écran suivante. Merci.

entrer la description de l'image ici

entrer la description de l'image ici

J’ai rencontré les mêmes erreurs, nous avons utilisé plusieurs versions et types de build. Il y a donc des étapes pour le faire fonctionner:

  1. Tests de studio Android exécutent la configuration

Vous devez également définir le répertoire de travail sur $ MODULE_DIR $ dans Windows. http://robolecsortingc.org/getting-started/ devrait dire cela.

  1. Le test unitaire doit être annoté comme ceci:

    @RunWith (RobolecsortingcTestRunner.class) @Config (constantes = BuildConfig.class, sdk = 21, manifest = “src / main / AndroidManifest.xml”, packageName = “com.example.yourproject”) classe publique SomeFragmentTest {

Si vous rencontrez toujours cette erreur avec Android Studio 3.0, veuillez vous assurer que la configuration de votre gradle possède les parameters suivants:

 android { ... testOptions { unitTests { includeAndroidResources = true } } } 

Vous pouvez vous référer au même problème ici: https://github.com/robolecsortingc/robolecsortingc/issues/1648

Vous devriez le mentionner dans votre code de test:

 @Config(manifest = "src/main/AndroidManifest.xml", emulateSdk = 18) 

Cela indique à la robotique où se trouve votre fichier manifeste. Cela devrait fonctionner sauf si vous modifiez vos valeurs de répertoire.

Essayez également d’utiliser le modèle disponible sur Internet. Tout est configuré ici. Vous n’avez pas besoin de modifier les valeurs de votre répertoire. Vous pouvez l’obtenir ici: https://github.com/robolecsortingc/deckard-gradle

Edit: La façon dont je vois que l’exception se produit à ” build/intermediates/bundles/debug/AndroidManifest.xml " mais vous dites que le fichier est à "app/build/intermediates/manifests/full/debug/AndroidManifest.xml" , Je suppose que ces deux endroits sont différents. Assurez-vous d’avoir le fichier xml à build/intermediates/bundles/debug/AndroidManifest.xml "

Notez que intellij 16 EAP a un bug autour de cette variable $ MODULE_DIR $ (il pointe au mauvais endroit), provoquant l’échec des tests avec cette exception. Voir https://youtrack.jetbrains.com/issue/IDEA-149802#tab=History . Devrait être fixé mi-janvier 2016.

C’est correct @Christine. Je suis également confronté au problème exact. Et la chose est que le processus de création ne crée pas de dossier groupé sous des intermédiaires. Et le runner robotique personnalisé ne fonctionnait pas non plus. Voici le coureur personnalisé que j’ai utilisé. Je n’ai pas encore trouvé la solution, mais il semble que le problème soit lié à la version de l’outil de construction qui doit être utilisée.

[Update] Modifier le répertoire de travail dans la configuration de mon test unitaire pour qu’il pointe vers le répertoire racine du module en cours de test a fonctionné pour moi.

J’ai eu cette erreur après avoir mis à jour AndroidStudio 2.3.3 et mon plug-in gradle a également été mis à jour. Il a été résolu en définissant le working directory sur $MODULE_DIR$ et en mettant à jour la dépendance robolecsortingc de testComstack 'org.robolecsortingc:robolecsortingc:3.0' à testComstack 'org.robolecsortingc:robolecsortingc:3.4.2' .

Notez que la définition du working directory alors robolecsortingc version robolecsortingc est ancienne ne résoudra pas le problème.