2015-03-13 5 views
4

я был в состоянии получить отчет покрытия кода, следуя приведенным ниже инструкциям,Jacoco преобразования coverage.ec сообщениям без coverage.em

  1. Включить покрытие от типа сборки вы хотите (например, отладка)

    buildTypes { debug { testCoverageEnabled true } }

  2. Применить Jacoco плагин и установить версию

    apply plugin: 'jacoco' jacoco { version "0.7.1.201405082137" }

  3. Run

    ./gradlew createDebugCoverageReport

  4. Все тесты в connectedAndroidTest запускаются и отчет покрытия формируется на их основе. Я могу найти отчеты покрытия в

    app/build/outputs/reports/coverage/{buildType}/index.html

и coverage.ec файл в

app/build/outputs/code-coverage/connected/coverage.ec

Но нет jacoco.exec, так как я бегу из Android Instrumentation вместо Robolectric тестовые примеры.

И когда я бегу инструментовку от АБР (я предполагаю, что это все еще использует Эмме) следующим образом, я получаю coverage.ec файл следующим образом,

$ adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec com.sample.helloworld.test/.Runner 
.... 
OK (4 tests) 

Generated code coverage data to /sdcard/coverage.ec 

Но я не в состоянии преобразовать покрытие .ec, чтобы сообщить об использовании emma, так как отсутствует файл coverage.em,

java -cp ~/adt-bundle-mac-x86_64-20130729/sdk/tools/lib/emma_device.jar emma report -r html -in \ 
coverage.em,myFile.ec,myapp_coverage1.ec -sp /path/to/myapp/src 

Есть ли способ обойти эту проблему ??

+0

Я был в состоянии преобразовать coverage.ec файл отчета jacoco с помощью пользовательского Gradle задачи, реализация в https://github.com/srideviaishwariya/Automation-Tools- for-Android/tree/master/Sample1 – sri

ответ

7

Просто используйте «coverage.ec» как «.exec» файл, он работал для меня

Это то, что Google сделал в исходном коде Android Gradle Plugin.

public static final String FILE_COVERAGE_EC = "coverage.ec";

в SimpleTestCallable.java под пакетом com.android.builder.internal.testing.

+2

Ничего себе, да, вы можете просто переименовать файл в 'cover.exec', и он станет доступен в Android Studio (2.0) под' Show Coverage Data', и вы получите весь свой код, в окне редактора. –

+2

@NicolasGramlich Я изменил его на exec и открыл его через Show Coverage Data - но он отображает 0% для всего кода –

+0

@UrielFrankel. Я встретил ту же проблему, так что вы ее разрешили? –

3

Я написал статью о том же сценарии и моем решении. You can read it here. Для ответа на этот конкретный вопрос, вы должны выполнить следующие шаги: Изменить Gradle к этому:

apply plugin: 'jacoco' 
jacoco { 
    toolVersion = '0.7.5.201505241946' 
} 

Второй download this jar. Продолжайте делать то, что вы сделали, пока не получите файл coverage.ec. Затем, когда вы его запустите:

java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p ./path/to/android/project 

И вот оно! В банке будет создана папка с охватом кода.

Другой вариант - использовать cover.ec с плагином Jenkins Jacoco. Но для этого вам нужно включить Дженкинса.

+0

Выполнение банки всегда дает мне «FileNotFoundException». Файл есть, и я проверил путь несколько раз. –

+0

Вы уверены, что имя файла верное? –

+0

+ может быть неправильный путь проекта –

0

Удалить. из следующих команды своей работы для меня

java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p /path/to/android/project 
+0

о, вы правы –