android - Jacoco con Gradle 0.10.0: el objeto remoto no existe
testing android-gradle (1)
Prueba este ...
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ''com.android.tools.build:gradle:0.13.0''
}
}
repositories {
mavenCentral()
}
apply plugin: ''com.android.application''
apply plugin: ''jacoco''
android {
compileSdkVersion 21
buildToolsVersion "21.1.1" // Must Require
defaultConfig {
applicationId "com.packagename" <Change it>
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
packagingOptions {
exclude ''META-INF/DEPENDENCIES''
exclude ''META-INF/LICENSE''
exclude ''META-INF/LICENSE.txt''
exclude ''META-INF/NOTICE''
exclude ''META-INF/NOTICE.txt''
exclude ''META-INF/services/javax.annotation.processing.Processor''
}
lintOptions {
abortOnError false
}
buildTypes {
debug {
testCoverageEnabled true
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
}
jacoco {
toolVersion = "0.7.1.201405082137"
}
ACTUALIZACIÓN 21 de octubre de 2014: el problema se ha confirmado como solucionado mediante el uso de buildtools 21.
ACTUALIZACIÓN EL 18 DE SEPTIEMBRE DE 2014: el estado del problema se actualizó a FutureRelease
.
ACTUALIZACIÓN: He oído que esto puede no funcionar con Dagger, y dado que Espresso usa Dagger, podría estar causando algunos problemas. Se envió un error al equipo de Gradle.
Google actualizó recientemente su implementación de Gradle a 0.10.0 . Una de las cosas que ahora ofrecen es el apoyo de Jacoco. Para hacer esto, mencionan establecer lo siguiente:
testCoverageEnabled = true
En tu tipo de construcción Ahora cuando ejecuto mis pruebas Espresso (usando connectedCheck
), me sale un error justo cuando empiezo a ejecutar la tarea :connectedAndroidTest
que dice:
Tests on HTC One - 4.2.2 - API 17 - 1080x1920 - 4.2.2 failed: Instrumentation run failed due to ''java.lang.VerifyError''
01:38:31 E/Device: Error during Sync: Remote object doesn''t exist!
null
java.io.IOException: com.android.ddmlib.SyncException: Remote object doesn''t exist!
at com.android.builder.testing.ConnectedDevice.pullFile(ConnectedDevice.java:114)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:158)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:42)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.ddmlib.SyncException: Remote object doesn''t exist!
at com.android.ddmlib.SyncService.pullFile(SyncService.java:314)
at com.android.ddmlib.Device.pullFile(Device.java:849)
at com.android.builder.testing.ConnectedDevice.pullFile(ConnectedDevice.java:107)
... 8 more
:connectedAndroidTest FAILED
Aquí están las partes que he cambiado en el archivo build.gradle
:
buildscript {
dependencies {
classpath ''com.android.tools.build:gradle:0.10.+''
...
}
...
}
android {
buildTypes {
debug {
testCoverageEnabled = true
...
}
....
}
...
}
¿Hay alguna otra pieza del archivo build.gradle
que deba actualizar para que Jacoco funcione?
El error menciona que un "objeto remoto" no existe. Por lo general, atribuyo esto al simulador que no está sincronizado y un reinicio lo soluciona. Pero lo he intentado y tampoco funcionó. ¿Alguna idea de lo que el error intenta decirme?