Pruebas de unidad de Android: no hay ninguna propiedad de este tipo: bootClasspath
Estoy tratando de ejecutar un caso de prueba simple para Android después de anunciar el soporte de prueba de unidad – http://tools.android.com/tech-docs/unit-testing-support
Después de seguir cuidadosamente el tutorial, estoy intentando ejecutar la ./gradlew test
. Estoy recibiendo este error:
- Uso de la función gradleReference en cordova plugin.xml
- Android Studio ejecuta la aplicación / prueba directamente si no se cambia nada
- Cómo incluir archivos aar utilizados en proyectos de biblioteca en el proyecto principal en Android
- En Android Gradle build.gradle ¿Qué es "it" en it.buildConfigField?
- Android Studio de repente no puede resolver los símbolos
Execution failed for task ':app:compileDebugGroovy'. > No such property: bootClasspath for class: com.android.build.gradle.AppPlugin
Mientras usa com.android.tools.build:gradle:1.1.0-rc1
.
¿Alguien se ha quedado atascado en eso?
- Cómo instalar gradle-3.0 manualmente
- Método de DSL no admitido de Gradle encontrado: 'exclude ()'
- Instalar manualmente Gradle y usarlo en Android Studio
- Recursos en el sub módulo de hermanos, proyecto Gradle
- Error de sincronización de Gradle en el estudio de Android al importar un proyecto
- Android Studio Build / Limpieza
- Android Studio Error: Método Gradle DSL no encontrado: 'tiene ()'
- Cordova Android Upgrade - No se puede encontrar el módulo 'lodash / object / assign' Error
El problema es que Groovy Android Gradle plugin (para tener Groovy trabajando en Android) no es simplemente trabajar con Android plugin en la versión 1.1.0-rcX
.
Aquí está una pieza muy interesante de código directamente de groovyx.grooid.GroovyAndroidPlugin
, versión 0.3.5
(actual más reciente, aquí está la fuente )
def getRuntimeJars(Project project, plugin) { int index switch (getAndroidPluginVersion(project)) { case ~/0\.9\..*/: index = 0 break case ~/0\.10\..*/: case ~/0\.11\..*/: case ~/0\.12\..*/: case ~/0\.13\..*/: case ~/0\.14\..*/: case ~/1\.0\..*/: index = 1 break default: index = RUNTIMEJARS_COMPAT.size()-1 } def fun = RUNTIMEJARS_COMPAT[index] fun(plugin) }
Y definición de RUNTIMEJARS_COMPAT
:
private static List RUNTIMEJARS_COMPAT = [ { it.runtimeJars }, { it.bootClasspath } ]
Así que la API debe haber cambiado en Android Gradle entre 0.9.x
0.10.0
(sí, ya sé – los devs de Google cambian todo lo que allí: []. Así que vamos a echar un vistazo a ese problema haciendo la clase en Android Plugin versión 1.0.0
:
> javap -cp [path to proper jar] com.android.build.gradle.AppPlugin: public class com.android.build.gradle.AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradle.api.Plugin<org.gradle.api.Project> { ... public java.util.List super$2$getBootClasspath(); ...
¡Sip! Hay el método que necesitamos (procedente de la clase parent com.android.build.gradle.BasePlugin
). Ahora no hay nada como eso en la versión 1.1.0-rc3
. Lo que es más, la API de com.android.build.gradle.AppPlugin
está completamente cambiado, por lo que no es una cuestión de if(version)
para solucionar eso.
Supongo que no hay posibilidad de que Groovy Android Gradle plugin de trabajo con las pruebas de unidad (desde 1.1.0
) hasta que los autores actualizar el complemento.
Esperemos entonces.
Esa característica de prueba de soporte es experimental. Dicho esto, tal vez no hay una solución rápida a su problema o puede ser un error.
Sin embargo, me gustaría profundizar en esto, leyendo el mensaje: Esta línea de Execution failed for task ':app:compileDebugGroovy'.
Menciona la tarea, así que iría a calcular lo que hace esa tarea. Supongo que es una tarea entregada. El error es que en esa tarea hay una propiedad que falta > No such property: bootClasspath for class: com.android.build.gradle.AppPlugin
Así que tal vez trate de encontrar esa tarea y asegúrese de que la propiedad bootClasspath está establecida para la clase AppPlugin.
Intente actualizar a la nueva versión ( RC3 )
dependencies { classpath 'com.android.tools.build:gradle:1.1.0-rc3' // .. }
También puede echar un vistazo aquí para comparar su configuración actual con un ejemplo de trabajo.
- Cómo arreglar la orientación de la pantalla en vertical para toda mi aplicación PhoneGap
- Uso de la API de Dropbox para cargar un archivo con Android