web-dev-qa-db-fra.com

Pourquoi le module de bibliothèque Android.support.test n'est-il pas visible dans la dépendance d'ajout?

J'ajoute Espresso à mon projet dans Android Studio. J'ai installé le référentiel de support et en utilise déjà des morceaux. Ensuite, j'ai ajouté ces dépendances à app/build.gradle en suivant les instructions d'installation:

androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.Android.support.test:testing-support-lib:0.1'

en écrivant mon test, l'auto-complétion reconnaît l'existence des artefacts. Mais quand je cours, j'obtiens cette erreur:

error: package Android.support.test does not exist
error: package org.junit does not exist

et un certain nombre d'autres sous-paquets à ces deux.

J'ai donc supprimé les deux lignes ci-dessus de build.gradle et essayé d'ajouter ensuite dans la structure du projet graphique/modules/dépendances

ni 'com.Android.support.test.espresso: espresso-core: 2.0' ni 'com.Android.support.test: testing-support-lib: 0.1' n'apparaissent comme des options parmi lesquelles choisir. Cependant, dans mon système de fichiers, il y a <sdk>\extras\Android\m2repository\com\Android\support\test\espresso\espresso-core\2.0\ avec la totalité des fichiers, dont espresso-core-2.0.aar, que je peux ouvrir et naviguer à l'intérieur via winzip. Dans le système de fichiers, il n’est pas différent des autres bibliothèques installées via SDK Manager avec Support Repository.

Pourquoi le studio Android ne reconnaît-il pas cette bibliothèque?

Votre aide est grandement appréciée. Personne d’autre que je peux trouver ne semble avoir connu ce problème. C'est le plus proche que j'ai pu trouver: Pourquoi les packages du module de bibliothèque n'existent-ils pas lors de la compilation, même si Android Studio n'affiche aucune erreur dans le code?

J'ai essayé de réinstaller Support Repository deux fois.

21
user2624395

J'ai eu le même problème et j'ai constaté que les dépendances avec androidTestCompile sont visibles uniquement par défaut dans la variante de construction debug.

Vous pouvez changer la variante de construction à tester en l'ajoutant à votre build.gradle:

Android {
    ...
    testBuildType "staging"
}

où "staging" n'est qu'un exemple, vous devez le remplacer par l'une de vos variantes de construction.

Rappelez-vous qu'une seule variante est testée.

Plus d'informations ici https://code.google.com/p/Android/issues/detail?id=98326

32
ebelli

J'ai eu ce problème aussi et j'ai mes cas de test Android sous src/androidTests comme recommandé par Google, mais cela a causé des problèmes avec build.gradle:

sourceSets {
    main {
        Java.srcDirs = ['src']
    }
}

Avec ce qui précède, nous essayons de compiler tous mes cas de test dans la cible normale debug compilation, qui n'inclut pas l'espresso et les autres dépendances car elles sont répertoriées sous androidTestCompile .

En fin de compte, j'ai résolu ce problème en excluant le sous-répertoire androidTest de la compilation et en définissant la racine de androidTest dans le répertoire approprié.

sourceSets {
    main {
        Java.srcDirs = ['src']
        Java.excludes = ['androidTest/**']
    }
    androidTest.setRoot('src/androidTest')
}
13
zai chang

Il existe 2 configurations de dépendances de test différentes:

  • testCompile - utilisé par la suite de tests unitaires (situé dans le dossier src/test et appelé par ./gradlew test
  • androidTestCompile - utilisé par la suite de tests d'intégration (situé dans le dossier src/androidTest et appelé par ./gradlew connectedAndroidTest).

Je soupçonne que votre code de test est dans le mauvais emplacement de la suite de tests

Dans votre cas, votre code de test doit aller dans le dossier src/androidTest et la suite de tests doit être exécutée en exécutant ./gradlew connectedAndroidTest.

12
Pavel Dudka

J'ai eu le même problème et il a été résolu en appuyant sur Clean Project à partir de l'onglet Construire dans Android Studio. 

Après avoir cliqué sur Nettoyer projet, surveillez la console Gradle pour détecter les erreurs potentielles. Si le nettoyage est réussi, entrez simplement dans l’une de vos classes de test et saisissez «Espresso». L’achèvement du code intelligent devrait offrir des suggestions. Tout devrait automatiquement importer lorsque vous utilisez Espresso par la suite. 

J'espère que cela t'aides!

10
Poptart

Ma solution était plus facile et plus simple, je viens juste de passer à Android Studio File>Invalidate Caches/Restart et cela a fonctionné correctement. Il semble qu'Android Studio garde du cache qui ne sera pas nettoyé avec Rebuild/Clean.

3
Eefret

1.Cliquez sur le menu déroulant en regard du bouton Exécuter de la barre d’outils. 

2.Cliquez sur Modifier la configuration

3.Maintenant, supprimez tous les autres sauf app (dans Android App) et le défaut.

Cela a fonctionné pour moi. J'espère que ça aide.

0
user7406268

J'ai rencontré ce problème alors que je portais l'une de mes applications dans un nouveau paradigme visuel et j'ai découvert que mon fichier build.gradle, au niveau de l'application, manquait de ce qui suit:

androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
0
Hitsugaya198