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:
@Config
. /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.
L’important est $ MODULE_DIR $ .
vous pouvez référencer la capture d’écran suivante. Merci.
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:
Vous devez également définir le répertoire de travail sur $ MODULE_DIR $ dans Windows. http://robolecsortingc.org/getting-started/ devrait dire cela.
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.