Jacoco с Gradle 0.10.0: удаленного объекта не существует
ОБНОВЛЕНИЕ 21 октября 2014 года:
Проблема была подтверждена как исправленная с помощью buildtools 21.
ОБНОВЛЕНИЕ SEPT 18, 2014:
Статус был обновлен до FutureRelease
.
UPDATE:
Я слышал, что это может не работать с кинжалом, и поскольку Espresso использует Кинжал, это может вызвать некоторые проблемы. A ошибка была отправлена команде Gradle.
Недавно Google обновил версию Gradle до 0.10.0. Одна из вещей, которые они предлагают сейчас, - это поддержка Jacoco. Для этого они отмечают следующее:
testCoverageEnabled = true
В свой тип сборки. Теперь, когда я запускаю свои тесты Espresso (используя connectedCheck
), я получаю ошибку, когда я запускаю задачу :connectedAndroidTest
, которая гласит:
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
Вот части, которые я изменил в файле build.gradle
:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:0.10.+'
...
}
...
}
android {
buildTypes {
debug {
testCoverageEnabled = true
...
}
....
}
...
}
Есть ли какой-нибудь другой файл build.gradle
, который мне нужно обновить, чтобы заставить Jacoco работать?
В ошибке упоминается, что "удаленный объект" не существует. Обычно я связываю это с тем, что эмулятор не синхронизирован, и перезапуск его исправит. Но я пробовал это, и он тоже не работает. Любые идеи, что ошибка пытается мне сказать?
Ответы
Ответ 1
Попробуйте этот...
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"
}