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:
- Prácticas recomendadas para la prueba de unidades de Android?
- La ejecución de instrumentación falló debido a 'java.lang.IllegalAccessError'. Gradle + Espresso
- ¿Qué hace la propiedad testOptions.animationsDisabled en el complemento Android Gradle?
- La interfaz de usuario de Espresso se ejecuta cuando ejecuto una sola prueba, pero falla cuando ejecuto un conjunto de pruebas
- ¿Cómo puedo probar una Intención lanzada / enviada desde una Actividad?
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.
- Cómo JUnit prueba IntentService
- Robolectric, Problemas con los elementos de la lista de clics
- Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
- Cómo probar un IntentService utilizando un ServiceTestCase?
- No se puede iniciar el servicio no enlazado dentro de Android JUnit 4 instrumentado prueba
- ¿Cómo puedo probar setResult () en una prueba de Android Espresso?
- ¿Cómo ingresar comandos a CTS-Tradefed?
- Prueba de Google Play Alpha y Beta con diferentes puntos finales o parámetros personalizados
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