La prueba de instrumentación de Android no encuentra clases del proyecto de biblioteca

Así que estoy recibiendo un NoSuchMethodError cuando NoSuchMethodError mis pruebas de actividad / instrumentación de Android Studio, en la línea de código que intenta llamar a un método en un módulo de biblioteca de la prueba de unidad.

Así que esta es mi prueba:

 public class MainActivityTest extends ActivityInstrumentationTestCase2 { public void testMainActivity() { final MainActivity target = (MainActivity) getActivity(); MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError } 

¿Cuál es el trato aquí? He definido mi biblioteca como una "compilación" -dependencia en build.gradle, y está compilando muy bien. La biblioteca también se invoca desde las clases de aplicación principal sin problemas. Es sólo cuando lo llamo de las pruebas que falla. Mi aplicación y mis pruebas están en el mismo módulo.

He intentado ejecutar la tarea limpia, las tareas assembleDebug y assembleDebugTest manualmente. No sirvió.

Estructura del proyecto:

 Root |---MyApp | |---src/main/... | |---src/androidTest/... |----MyLibrary 

Ejecución de Android Studio v1.0.2 Herramientas de compilación de Gradle v1.0.0 Ejecución como una "Prueba de Android" en el módulo "MyApp" de las configuraciones de ejecución / depuración de AS con el corredor de pruebas de Instrumentación predeterminado.

Bueno, éste era un poco complicado. Palabra clave: proguard minify . Dado que el método recién implementado hasta ahora solo fue utilizado por la prueba de instrumentación, proguard no captó su uso y por lo tanto lo retiró del DEX en el paso de construcción proguardDebugTest.

Solución: Deshabilite la minificación en la compilación de depuración (en gradle: android.buildTypes.debug.minifyEnabled false ) o utilice el método en la aplicación principal.

No muy al día con Gradle . Pero creo que se supone que debemos especificar el testCompile o la dependencia de androidTestCompile también en el build.gradle si build.gradle tratando de escribir pruebas de instrumentación.

Enlaces Útiles:

http://gradle.org/docs/current/userguide/java_plugin.html

Especificación de las dependencias de prueba con el sistema de compilación de Gradle Android

Espero que esto ayude

  • Prueba de aplicaciones de Android
  • Espresso: Cómo utilizar R.string recursos de la carpeta androidTest
  • Actividad de inicio para pruebas
  • Establecer la orientación del emulador / dispositivo mediante programación en la prueba de instrumentación
  • Espresso cómo hacer clic en un ImageView colocado en el primer elemento de la lista?
  • Crear carpeta en el contexto Instrumentation
  • No se puede conseguir que Robotium funcione en Android Studio
  • Java.lang.RuntimeException: ¡Stub! - ¿Cobertura de código de Android?
  • ¿Es posible probar una actividad abstracta con Robolectric
  • Cómo rellenar la contraseña EditText con Android uiautomator?
  • Cómo escribir prueba funcional automatizada con Facebook SDK en la aplicación de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.