Как получить покрытие кода в Android с помощью Maven (android-maven-plugin) - PullRequest
11 голосов
/ 25 октября 2011

У меня есть проект Android Maven (назовем его parent_project ), который содержит различные подмодули: my_library_project , app_using_my_library_project , test_project и extra_lib .

Итак, структура будет такой:

parent_project
   * my_library_project (Android Library Project)
   * app_using_my_library_project (Demo app that uses the Android Library Project)
   * test_project (Project containing the tests instrumented against app_using_my_library_project)
   * extra_lib

Я хотел бы создать тестовое покрытие для моего проекта Android с использованием Maven (а неAnt, я уже могу создавать отчеты о покрытии кода, используя Ant, следуя этим инструкциям: https://wiki.jenkins -ci.org / display / JENKINS / Building + + Android + app + и + test + project ).

У меня нет строгих предпочтений к используемому инструменту покрытия кода, но я бы предпочел EMMA, так как кажется наиболее распространенным в мире разработки для Android.

Я использую android-maven-plugin (http://code.google.com/p/maven-android-plugin/) в его версии 3.0.0-alpha-12, и я уже пытался вставить в конфигурацию pom.xml моего родителя следующее:

<test>
  <coverage>true</coverage>
  <createreport>true</createreport>
</test>

Но это не дает желаемого покрытия кодаотчет.

Итак:

  • Есть ли разница между конфигурацией pom для получения покрытия кода для стандартного проекта Java и проекта Android?
  • Знаете ли вы какой-нибудь пример проекта Android с использованием Mavenчто имеет покрытие кода?
  • Есть какие-нибудь советы, как это сделать?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Если вы собираетесь придерживаться Maven и хотите подключить плагин для Maven, который будет выполнять работу по покрытию кода, я думаю, Cobertura - лучший выбор, так как Emma последняя стабильная сборка с 2005 года.

Хотя в «Руководстве по тестированию приложений Android» (недавняя книга от июня этого года) они рассказывают об Эмме и демонстрируют, как использовать ее для тестирования, я думаю, что люди придерживаются этого, потому что это необходимо собрать Android из исходного кода (и если Google использует его для разработки собственных ОС, он должен быть лучшим, верно?).

Если вы не фанатично связаны с Maven, я настоятельно рекомендую попробовать Robotium . Robotium полностью поддерживает деятельность, диалоги, тосты, меню и контекстные меню. Он также поддерживает код покрытие (хотя пока и на основе Ant), и некоторые люди признают его одной из ведущих платформ тестирования для Android.

Редактировать:

Согласно сайту Cobertura , он поддерживает покрытие кода в средах Maven 1 и Maven 2. Хотя вы также можете найти примеров с Maven 3. Существует проблема между конфигурациями pom в Maven 2 и Maven 3. Похоже, что для создания отчетов вам нужно переместить старые подключаемые модули отчетов в раздел конфигурации нового maven-site-plugin . (Подробности смотрите в статье).

Другой вариант - попробовать Sonar с Maven. В сонар встроена cobertura (также есть варианты для встраивания EMMA ), и некоторые люди заявляют, что они успешно сообщили о покрытии кода, несмотря на то, что у них были проблемы с использованием "автономного" плагина cobertura.

0 голосов
/ 02 июля 2013

Я мог бы генерировать покрытие кода, о котором сообщалось, используя плагин emma maven, и отображать отчеты в сонаре для проекта приложения для Android.Просто следуйте настройке в https://code.google.com/p/maven-android-plugin/wiki/EmmaMaven. Но для библиотечного проекта я получаю покрытие 0%.Он не генерирует файлы метаданных.Однако, как только я изменяю проект библиотеки на пакет как apk, он работает как шарм.Он запускает тесты в эмуляторе (настроенном в jenkins) и показывает отчеты о покрытии.Если вы ищете специально для библиотечного проекта, это не поможет.Я опубликую, если найду какое-нибудь решение, которое касается библиотечных проектов.

...