Jacoco with Gradle 0.10.0: Удаленный объект не существует

ОБНОВЛЕНИЕ 21 октября 2014 года . Проблема была подтверждена как исправленная с помощью buildtools 21.

UPDATE SEPT 18, 2014: статус проблемы обновлен до FutureRelease .

ОБНОВЛЕНИЕ: Я слышал, что это может не работать с кинжалом, и поскольку Espresso использует кинжал, это может вызвать некоторые проблемы. Ошибка была передана команде «Грейдл».


Недавно 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 работать?

Ошибка указывает, что «удаленный объект» не существует. Обычно я отношу это к тому, что эмулятор не синхронизирован, и перезапуск его исправит. Но я пробовал это, и он тоже не работает. Любые идеи, что ошибка пытается мне сказать?

Попробуй это…

 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" }