2015-06-01 5 views
21

In meiner build.gradle Datei habe ich die Support-Bibliothek Abhängigkeiten:Warum würde das Hinzufügen von Espresso-contrib zu einer InflateException führen?

compile "com.android.support:appcompat-v7:22.2.0" 
compile "com.android.support:recyclerview-v7:22.2.0" 
compile "com.android.support:design:22.2.0" 

Ich habe Abhängigkeiten auch für Espresso-Tests:

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2' 
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2' 

Alles an diesem Punkt in Ordnung läuft, aber wenn ich hinzufügen, um die Abhängigkeit für espresso-contrib erhalte ich eine InflateException auf meinem RecyclerView

android.view.InflateException: Binary XML file line #33: Error inflating class android.support.v7.widget.RecyclerView 
at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) 
... 
Caused by: java.lang.IllegalStateException: Binary XML file line #33: Unable to find LayoutManager [email protected] 
at android.support.v7.widget.RecyclerView.createLayoutManager(RecyclerView.java:500) 
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:438) 
at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:404) 
... 
Caused by: java.lang.ClassNotFoundException: Didn't find class "[email protected]" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.myapp.debug.test-1/base.apk", zip file "/data/app/com.myapp.debug-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
at android.support.v7.widget.RecyclerView.createLayoutManager(RecyclerView.java:480) 
... 
Suppressed: java.lang.ClassNotFoundException: Invalid name: [email protected] 
at java.lang.Class.classForName(Native Method) 
at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 

Jede Idee, warum diese könnte passieren und wie kann ich es beheben?

Antwort

49

Versuchen Sie dies in Ihrem build.gradle:

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2'){ 
    exclude group: 'com.android.support', module: 'appcompat-v7' 
    exclude group: 'com.android.support', module: 'support-v4' 
    exclude module: 'recyclerview-v7' 
} 
+0

Was ist der Unterschied zwischen espresso-contrib und espresso-core? –

+4

espresso-contrib bietet Ihnen die Möglichkeit, Klassen wie Datepicker, Drawinglayout und Recyclerview zu testen. Siehe hier: http://developer.android.com/reference/android/support/test/espresso/contrib/package-summary.html – elcolto

+1

Es löste einen Fehler 'Keine Klasse gefunden' für 'android.support.v7.app .AppCompatDelegateImplV14' mit Progard, danke! – Caipivara

2

Versuchen Sie folgendes:

// Testing dependencies 
androidTestCompile 'com.android.support.test:runner:0.4.1' 
androidTestCompile 'com.android.support.test:rules:0.4.1' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' 
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1' 
    androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') { 
     exclude group: 'com.android.support', module: 'appcompat' 
     exclude group: 'com.android.support', module: 'support-v4' 
     exclude module: 'support-annotations' 
     exclude module: 'recyclerview-v7' 
    } 
7

Ich habe das gleiche Problem über Fehlerklasse Recycler Ansicht Aufblasen und versuchte mehrmals mit verschiedenen Codes, schließlich Ich löste dieses Problem, indem ich diese Codes in Projektgradle hinzufügte:

androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1' 
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1') { 
    exclude module: 'support-annotations' 
} 
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2.1') { 
    exclude module: 'support-annotations' 
    exclude module: 'support-v4' 
    exclude module: 'recyclerview-v7' 
} 

Zweitens, Sie müssen sicherstellen, dass Sie Kartenansicht und Recycler Blick in die neueste Version verwenden:

compile 'com.android.support:cardview-v7:23.1.1' 
compile 'com.android.support:recyclerview-v7:23.1.1' 

Dann können Sie Ihren Test ausführen, die Recycler Ansicht hat darin Aktivität Layout ist. Es wird gut funktionieren und kein Fehler passiert wieder.