J'ai essayé presque tous les trucs du livre.
Mais rien ne semble fonctionner, voici mon build.gradle. J'utilise la version 1.2.3 de Gradle. Quelqu'un peut-il s'il vous plaît éclaircir quoi d'autre pourrait être le problème avec mon code.
La seule chose que je n’ai pas essayée, c’est de changer de version de Gradle . C’est un cas très élémentaire de test Espresso. Merci!
apply plugin: 'com.Android.application'
Android {
configurations.all {
resolutionStrategy.force 'com.Android.support:support-annotations:22.1.0'
}
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.rasika.job"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:22.1.1'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.Android.support.test:runner:0.3'
androidTestCompile 'com.Android.support.test:rules:0.3'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.1'
androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.0'
}
J'ai fourré exemple Google-Android-topeka et mis à jour la version de appcompat vers 23.1.0, même message:
Avertissement: Conflit avec dépendance "com.Android.support:support-annotations". Versions résolues pour app (23.1.0) et l'application de test (23.0.1) diffèrent.
J'ai ajouté:
androidTestCompile 'com.Android.support:support-annotations:23.1.0'
Maintenant, les deux résolvent en 23.1.0, l'avertissement est parti, et l'application et les tests fonctionnent toujours.
Je ne suis pas sûr que ce soit la meilleure solution, alors je cherche une autre solution, mais j'ai trouvé votre question.
Mise à jour: Lire cette bonne explication de PaulR .
Update2: Confirmé, Google google test le fait.
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile 'com.Android.support:support-annotations:23.0.1'
Update3: Une autre bonne réponse de CommonsWare .
Vérifiez vos versions/conflits/résolutions spécifiques en utilisant:
./gradlew -q yourmodule:dependencies
Appcompat est 22.1.1 dans votre cas, mais vous forcez 22.1.0.
Update4: Conflit de dépendances expliqué à Le système de construction Android (Android Dev Summit 2015) .
Résolution des conflits entre test principal et test APK
Lorsque des tests d'instrumentation sont exécutés, l'APK principal et l'APK de test partager le même chemin de classe. La construction de Gradle échouera si l'APK principal et le test APK utilise la même bibliothèque (par exemple, Guava) mais dans des fichiers différents versions. Si Gradle ne l'a pas compris, votre application pourrait se comporter différemment pendant les tests et pendant la marche normale (y compris le crash dans l'un des cas).
Pour que la compilation réussisse, assurez-vous que les deux APK utilisent la même chose version. Si l'erreur concerne une dépendance indirecte (une bibliothèque que vous n'avez pas mentionnée dans votre build.gradle), ajoutez simplement une dépendance pour le version plus récente de la configuration ("compiler" ou "androidTestCompile") qui en a besoin. Vous pouvez également utiliser la stratégie de résolution de Gradle mécanisme. Vous pouvez inspecter l'arbre de dépendance en exécutant ./gradlew : app: dépendances et ./gradlew: app: androidDependencies.
J'ai résolu le conflit en ajoutant une dépendance:
androidTestCompile 'com.Android.support:support-annotations:23.2.0'
J'ai eu le même problème, résolu par ceci:
// build.gradle
...
Android {
...
defaultConfig {
...
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2') {
// Necessary if your app targets Marshmallow (since Espresso
// hasn't moved to Marshmallow yet)
exclude group: 'com.Android.support', module: 'support-annotations'
}
androidTestCompile('com.Android.support.test:runner:0.3') {
// Necessary if your app targets Marshmallow (since the test runner
// hasn't moved to Marshmallow yet)
exclude group: 'com.Android.support', module: 'support-annotations'
}
}
solution a été trouvée ici: https://github.com/codepath/Android_guides/wiki/UI-Testing-with-Espresso
UPDATE: Enfin, le bloc de dépendances dans mon build.gradle ressemble à ceci:
dependencies {
...
compile 'com.Android.support:appcompat-v7:23.2.1'
compile 'com.Android.support:support-v4:23.2.1'
compile 'com.Android.support:design:23.2.1'
...
// Necessary if your app targets Marshmallow (since Espresso
// hasn't moved to Marshmallow yet)
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support.test.espresso:espresso-intents:2.2.2') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support.test:runner:0.5') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support.test:rules:0.5') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support.test.espresso:espresso-contrib:2.2.2') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support:support-annotations:23.2.1') {
exclude group: 'com.Android.support'
}
androidTestCompile('com.Android.support.test.uiautomator:uiautomator-v18:2.1.2') {
exclude group: 'com.Android.support'
}
}
Cela m’est arrivé récemment lors de l’ajout du uiautomator. Pour résoudre ce problème, vous devez déterminer la ou les dépendances utilisant le module obsolète. Vous pouvez le faire en encapsulant chaque dépendance androidTestCompile dans un bloc, comme suit:
androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2') {
transitive = false;
}
Ceci pourrait casser quelques autres choses cependant, vous devez donc faire attention. J'ai été en mesure d'identifier exactement les deux dépendances à l'origine de ce problème et d'ajouter ce mécanisme de blocage à celles-ci.
J'ai résolu le conflit en excluant la bibliothèque support-annotation des dépendances runner et espresso-core:
androidTestCompile 'com.Android.support.test:runner:0.5',{
exclude group: 'com.Android.support', module: 'support-annotations'
}
androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2.2'){
exclude group: 'com.Android.support', module: 'support-annotations'
}
Ajoutez ceci à votre build.gradle principal:
allprojects {
...
configurations.all {
resolutionStrategy.force 'com.Android.support:support-annotations:23.1.1'
}
...
}
Ajoutez des codes de suivi à votre bloc de dépendance dans le fichier build.gradle
compile 'com.Android.support:support-annotations:23.2.1'
testCompile 'com.Android.support:support-annotations:23.2.1'
androidTestCompile 'com.Android.support:support-annotations:23.2.1'
J'ai résolu le conflit en ajoutant une dépendance:
compile 'com.Android.support:appcompat-v7:23.2.1'
compile 'com.Android.support:design:23.2.1'
...
androidTestCompile 'com.Android.support:support-annotations:23.2.1'
Pour moi cela a bien fonctionné
dependencies {
androidTestCompile 'com.Android.support:support-annotations:23.1.1'
}
androidTestCompile passe à test Compile. Et rappelez-vous qu'il ne faut pas le changer pour le compiler, il suffit que ces dépendances soient compilées dans notre APK de débogage ou test APK.
J'ai résolu le conflit en ajoutant une dépendance:
androidTestCompile "com.Android.support:support-annotations:26.0.0-beta1"
En aussi entré dans le problème en disant
Impossible de résoudre
com.Android.support:support-annotations:23.1.0
et essayé de trouver dans d'autres serveurs,
Mais ce qui a résolu mon problème, c'est d'ajouter:
google-service.json
fichier de
https://developers.google.com/mobile/add
et copier et coller dans
YourAndroidProject/app
Puis recompilez-le et j'espère que votre code volera
Utilisez ceci pour résoudre un conflit
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})