La ejecución de instrumentación falló debido a 'java.lang.IllegalAccessError'

Estoy escribiendo pruebas para el proyecto de Android en este momento y simplemente no entiendo por qué es esto un dolor! Después de un día entero de la disposición finalmente consigo el trabajo, pero ahora, después de que he escrito varias clases de prueba Intellij IDEA se coloca:

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.IllegalAccessError''. Check device logcat for details Test running failed: Instrumentation run failed due to 'java.lang.IllegalAccessError' 

Las pruebas que estaba ejecutando hace un par de minutos no se pueden ejecutar más. Teniendo en cuenta que volví a mi último compromiso donde todo era ideal y no estaba cambiando cualquier configuración que me estoy preguntando por qué.

Esto es lo que logcat está diciendo:

 02-12 20:16:09.398: E/AndroidRuntime(4922): FATAL EXCEPTION: main 02-12 20:16:09.398: E/AndroidRuntime(4922): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:327) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:147) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:97) 02-12 20:16:09.398: E/AndroidRuntime(4922): at <package>.ui.CheckPasswordActivity.onCreateOptionsMenu(CheckPasswordActivity.java:130) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.support.v4.app._ActionBarSherlockTrojanHorse.onCreatePanelMenu(_ActionBarSherlockTrojanHorse.java:45) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:556) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:154) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:407) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:769) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:201) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.view.Choreographer.doFrame(Choreographer.java:531) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.os.Handler.handleCallback(Handler.java:725) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.os.Handler.dispatchMessage(Handler.java:92) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.os.Looper.loop(Looper.java:137) 02-12 20:16:09.398: E/AndroidRuntime(4922): at android.app.ActivityThread.main(ActivityThread.java:5039) 02-12 20:16:09.398: E/AndroidRuntime(4922): at java.lang.reflect.Method.invokeNative(Native Method) 02-12 20:16:09.398: E/AndroidRuntime(4922): at java.lang.reflect.Method.invoke(Method.java:511) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 02-12 20:16:09.398: E/AndroidRuntime(4922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 02-12 20:16:09.398: E/AndroidRuntime(4922): at dalvik.system.NativeStart.main(Native Method) 

Aunque ni siquiera toqué esta clase, la línea CheckPasswordActivity: 130 a la que se refiere es simplemente:

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.menu.menu_check_password, menu); return true; } 

Finalmente he encontrado una solución. El problema fue con las dependencias de hecho, todavía se desconoce por qué se utiliza para trabajar y luego repentinamente se negó, pero aquí es cómo las dependencias deben verse como para su módulo de prueba:

Introduzca aquí la descripción de la imagen

Por lo tanto, todo lo necesario para asegurarse de que todas sus bibliotecas y bibliotecas de proyectos estén listadas para su módulo de prueba y marcadas como "Proporcionadas" excepto Robotium lib, que es "Compilar".

En mi caso, se debe a los frascos duplicados que se incluyen.

Sobre la base de su otra pregunta … Creo que tengo algo de una configuración similar a la que … Aquí es más o menos cómo se establecen mis dependencias (leer sub-elementos como dependencias)

  • ActionBarSherlock
    • android-support-v4
  • Módulo Android
    • ActionBarSherlock
    • android-support-v4
  • Prueba de unidad
    • robocio
    • Módulo de Android

Todas las dependencias están configuradas como "compilar"

Utilizo ActionBarSherlock del código de fuente y ese módulo tiene "es un proyecto de la biblioteca" comprobado.

Acabo de tener el mismo problema tratar de hacer a continuación, ya que resolvió el problema.

Quitar android-support-v4 lib de su proyecto de prueba (o cualquier lib que se duplica para esa materia). Limpie los proyectos y construirlos de nuevo.

Agregue la línea siguiente:

 manifestmerger.enabled=true 

al archivo project.properties de su proyecto de aplicación.

Hizo el arreglo para mí 🙂 Tenía un proyecto con un proyecto de la biblioteca

  • Cómo obtener el texto visible de la contraseña EditText (después de PasswordTransformation - puntos)?
  • Pruebas para las masas con un solo teléfono y un emulador
  • Haga que Espresso espere a que WebView termine de cargar
  • Errores específicos del dispositivo Android
  • Cómo comprobar que la actividad muestra el diálogo durante la prueba de unidad de Android
  • Monitoreo de la entrega de Android GCM
  • Herramienta de prueba de la interfaz de usuario android de ADT21
  • ¿Cómo hago un MotionEvent para hacer zoom?
  • Emulador para probar APK
  • Cómo cambiar el tamaño de la pantalla física de Android desde el terminal / shell
  • Cómo burlar los permisos para realizar pruebas en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.