IncompatibleClassChangeError: android.support.design.internal.NavigationMenuView
Recibo un error muy extraño al probar una actividad que utiliza la biblioteca de diseño:
android.view.InflateException: Binary XML file line #28: Error inflating class android.support.design.widget.NavigationView at android.view.LayoutInflater.createView(LayoutInflater.java:640) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) at android.view.LayoutInflater.inflate(LayoutInflater.java:511) at android.view.LayoutInflater.inflate(LayoutInflater.java:415) at android.view.LayoutInflater.inflate(LayoutInflater.java:366) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:257) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) at de.stephanlindauer.criticalmaps.Main.onCreate(Main.java:77) at android.app.Activity.performCreate(Activity.java:6550) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:534) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3248) at android.app.ActivityThread.access$1000(ActivityThread.java:197) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6872) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by: java.lang.reflect.InvocationTargetException Caused by: java.lang.IncompatibleClassChangeError: android.support.design.internal.NavigationMenuView
Alguien tuvo el problema y encontró una manera de evitarlo? La actividad funciona fuera de las pruebas de espresso
- ¿Cómo obtener una vista desde dentro de Espresso para pasar a un IdlingResource?
- ¿Cómo puedo probar por Espresso android.widget.TextView setError?
- Android Studio: Testing: Dependencias de biblioteca que se han compilado utilizando java 8 o superior
- Operación de la cámara Prueba de la interfaz de usuario con Espresso
- isIdleNow () devuelve true, pero nunca se envió un mensaje indicando que el recurso ha pasado de ocupado a inactivo
Usando espresso 2.2.1
Aquí el diseño:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/abc_action_bar_default_height_material" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" /> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <android.support.design.widget.NavigationView android:id="@+id/drawer_navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:itemIconTint="@android:color/white" app:itemTextColor="@android:color/white" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer" /> </android.support.v4.widget.DrawerLayout>
Las dependencias:
dependencies { androidTestCompile 'com.android.support:support-v4:23.1.0' androidTestCompile 'com.android.support:support-annotations:23.1.0' 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-contrib:2.2.1' androidTestCompile 'com.squareup.spoon:spoon-client:1.2.0' androidTestCompile 'com.squareup.assertj:assertj-android:1.1.1' androidTestCompile 'org.mockito:mockito-core:1.9.5' androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.squareup:otto:1.3.8' compile 'org.osmdroid:osmdroid-android:4.3' compile 'org.slf4j:slf4j-simple:1.6.1' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.android.support:support-v4:23.1.0' compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:support-annotations:23.1.0' compile 'com.android.support:design:23.1.0' compile 'com.squareup.okhttp:okhttp:2.5.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'org.ligi:AXT:0.35' compile 'com.google.dagger:dagger:2.0.2' provided 'javax.annotation:jsr250-api:1.0' apt 'com.google.dagger:dagger-compiler:2.0.2' testCompile 'junit:junit:4.12' testCompile 'com.squareup.assertj:assertj-android:1.1.0' testCompile 'com.android.support:support-annotations:23.1.0' testCompile 'org.mockito:mockito-core:1.9.5' }
- Cómo utilizar Espresso Idling Resource
- Android Espresso no espera que la interfaz de usuario finalice
- Java.lang.IncompatibleClassChangeError causado por la instanciación de ActivityTestRule
- Pruebas de Android - Cómo agregar registros de Espresso
- Cargando imagen de forma sincrónica con Glide
- Prueba de color de fondo espresso Android
- Espresso: Cómo utilizar R.string recursos de la carpeta androidTest
- Cómo hacer clic en un elemento dentro de un RecyclerView en Espresso
Espresso depende de una serie de dependencias de soporte, ya partir de la última versión de Espresso (2.2.1), están todas anticuadas. Usted ha trabajado en torno a esto, incluyendo algunos de ellos como dependencias de prueba explícitamente, pero se le olvidó uno: recyclerview-v7.
Debe incluir recylerview-v7 como una dependencia de prueba o excluirla de contrib. Yo prefiero excluir esas dependencias para que por defecto mis dependencias normales de compilación:
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' }
Intente esto. Substituya por este código.
<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="left" app:headerLayout="@layout/layout_drawer_header" app:menu="@menu/drawer_menu" app:itemTextColor="@color/some_color"/>