Эмма не генерирует покрытие. - PullRequest
3 голосов
/ 22 декабря 2011

Я настроил Эмму, и она работала для меня.Тогда у нас были изменения исходного кода, и теперь он вообще не генерирует coverage.ec.Это генерирует coverage.em.Ближе к концу тестирования появляются сообщения об ошибках:

[exec] INSTRUMENTATION_CODE: 0
[echo] Downloading coverage file into project directory...
[exec] remote object '/sdcard/coverage.ec' does not exist

BUILD FAILED
/var/lib/jenkins/android-sdk-linux_x86/tools/ant/build.xml:1056: exec returned: 1.

Строка 1056 файла build.xml имеет значение

"{adb}" failonerror="true".

Я вижу, что у меня на рабочем столе есть coverage.em, чтоозначает, что мой код инструментирован.

команда, которую я использую в \ test,

ant emma debug install test

Это работало для меня раньше.Выполнение покрытия кода всегда приводит к сбою, обычно ближе к концу модульного теста, но оно всегда дает мне некоторое освещение.Теперь он вылетает и не выдает coverage.em.

Я также пытался получить доступ к /sdcard/, и он идеально доступен и доступен для записи.

Это заблокировало меня на несколько дней, любой ввод мог быбыть высоко ценится.Я также новичок во всех этих Android, Ant и Emma, ​​так что спасибо !!

Обновление : Я просто очистил среду и снова запустил команду. Теперь охват.генерируется либо.Который говорит мне, что исходный код не инструментирован.Но команда, которую я использовал выше, должна подготовить проект, его тестовый проект, установить и запустить тест.Я не изменил значение emma def в build.xml, за исключением того, что изменил расположение cover.ec на /sdcard/coverage.ec.Это потому, что по умолчанию он идет в / data / data, и у меня нет разрешения на доступ к данным / данным на этом телефоне

Я использую r15 Android SDK и файл build.xml по умолчанию.Я только изменил путь к cover.ec на /sdcard/coverage.ec.Для запуска инструментария

 Go to main_project
 $andriod update project -p .
 Go to main_prject\test
 $android update project -m ../ -p .
 To start code code
 $ant emma debug install test

было сгенерировано main_project-instrumented.apk и test_project-debug.apk.Оба установлены, и я вижу, что он выполняет тестирование.

Ответы [ 2 ]

4 голосов
/ 25 октября 2012

Сначала вы должны создать тестовый проект с помощью инструментов командной строки Android.

Создание проекта и тестового проекта

Предполагается, что ваш проект хранится в D:\AndroidProject и ваше программирование выполняется на уровне API Android 8. Сначала вы используете эту команду для создания проекта:

android update project --path ./ --name blabla~ --target android-8 --subprojects 

Затем создайте папку для тестового проекта и перейдите в эту папку:

mkdir Android_test
cd Android_test

Затем создайте тестовый проект Android с помощью следующей команды

 android create test-project --main ../AndroidProject --path ./

Сборка муравья с emmaотчет о покрытии (с корнем)

Выполните эту команду (из выбора jenkins и шага сборки), чтобы выполнить сборку с отчетом emma:

ant emma debug install test

Внимание : длячтобы это работало, вам нужно подключить устройство с правами root или эмулятор, а затем выполнить команду ant!

Изменить файл Build xml (поэтому не требуется рут)

Если вы не хотите рутировать свое устройствоальтернативное решение - изменить местоположение этих отчетов о покрытии.Для этого вам следует изменить файл build.xml.

(вы должны поискать информацию об этом для получения дополнительной информации, кратко объясненной здесь)

Откройте build.xml -> найдите место, где хранится файл coverage.ec,В большинстве случаев это будет храниться в /data/data/com.example.Android/coverage.ec

Проблема здесь в том, что путь /data/data/~~~ защищен (отсюда и требуемый корень).

в любом случае ~ вы можете получить coverage.html файл в папке вашего тестового проекта / bin.Следующие шаги объясняют, как это изменить, чтобы вместо этого сохранить этот файл на /sdcard!

Вы можете открыть свой файл build.xml и в последней строке ~ вы можете найти команду import ~~~ build.xml, что означает, чтоВаш файл build.xml импортирует другой файл build.xml.

Другой файл build.xml является частью Android SDK и находится по адресу ${Android-sdk}/tools/ant/build.xml.

Необходимые изменения для файла build.xml

Мы не можем изменитьэтот файл (без проблем), поэтому вместо этого скопируйте весь файл в другое место или прямо в файл build.xml ваших проектов.

Не забудьте адаптировать или изменить оператор импорта в файле build.xml независимо от того, что вы решите сделать.

Это то, что вам нужно изменить в этомновый файл build.xml:

  • Удалить import= ~~build.xml
  • Удалить первую строку xml=ejkwjkw?e jw ""project = "android_rule" ~~ ~ blabla)
  • и последнюю строку /project
  • обновить адрес до /sdcard/coverage.ec

Затем вы можете получить файл cover.ec ~

2 голосов
/ 02 января 2012

Я столкнулся с этой проблемой после обновления моего SDK до r16: Покрытие кода Эммы не работает в r15 инструментов

, и это исправило для меня:

ant all clean emma debug install test

Но я не уверен, что у вас возникла такая же проблема.

У меня нет разрешения на доступ к данным / данным на этом телефоне

Это нерутированное устройство?Обратите внимание, что сборка говорит:

WARNING: Code Coverage is currently only supported on the emulator and rooted devices.

Возможно, вы не можете обойти это ограничение, просто изменив местоположение файла покрытия.Работает ли это на виртуальном устройстве?

...