#android #testing #build #automation #continuous-integration
#Android #тестирование #сборка #автоматизация #непрерывная интеграция
Вопрос:
Наша команда новичок в разработке как для Android, так и для Java (изначально мы пришли с C ), поэтому наши знания об инструментах сборки для java довольно поверхностны.
Существует несколько инструментов сборки, которые можно использовать для автоматизации сборки, и самыми интересными, которые я нашел, были ant и maven. И хотя есть много статей по автоматизации сборки, я не нашел ни одного подробного руководства по автоматизации процесса интеграции для приложений Android.
Я был бы очень признателен, если бы вы указали свой предпочтительный инструмент сборки для Android и объяснили или дали какие-либо ссылки, объясняющие процесс непрерывной интеграции для приложений Android (которые охватывают не только сборку пакета приложений, но и запуск тестов в эмуляторе).
Большое вам спасибо за ваше время и помощь.
P.S.: Мы используем Team City в качестве сервера непрерывной интеграции.
Ответ №1:
Мы создаем нашу платформу непрерывной интеграции для Android, используя следующее:
Maven — для управления циклом сборки / модульного тестирования / интеграционного тестирования / развертывания, Hudson — для непрерывной интеграции
Team City также будет запускать проекты Maven — настроить агент TeamCity для выполнения определенной цели Maven довольно просто, например, mvn integration-test
— агент может быть запущен на ПК с подключенным эмулятором Android или настоящим устройством Android.
В прошлом у меня был целый банк агентов TeamCity, тестировавшихся на различном оборудовании. Например, если у вас есть 5 устройств Android, подключенных к агенту, вы можете настроить конвейер сборки TeamCity для запуска интеграционных тестов (легко управляемых через Maven) на ВСЕХ 5 устройствах и объявлять о прохождении только тогда, когда они пройдут на всех 5.
Комментарии:
1. Спасибо за ваш ответ. Да, Maven с maven-android-plugin успешно решил проблему. Кроме того, TeamCity легко интегрируется с ним. И все же, не могли бы вы сказать мне, есть ли какой-либо способ извлечь какие-либо журналы тестов Android instrumentation (которые выполняются под эмулятором)?
2. Доступ к журналам Android осуществляется с помощью команды «adb logcat» — вы можете передать ей различные параметры (см. developer.android.com/guide/developing/tools/adb.html#logcat ).
3. Спасибо, Мэтт. Но все же журналы logcat содержат так много нерелевантной информации и, более того, они вряд ли будут проанализированы анализаторами teamcity: ( Поэтому я подумал, есть ли способ генерировать, например, журналы Surefire или JUnit.
Ответ №2:
Ant (http://ant.apache.org /) в значительной степени является стандартом де-факто для создания java-проектов. Он оснащен очень простым в освоении языком сценариев и может даже использоваться для развертывания вашего приложения на нескольких целевых устройствах.
Для автоматического тестирования большинство разработчиков Java используют JUnit (http://www.junit.org /). Хотя тесты JUnit и не такие бесшовные, как платформа тестирования Ruby on Rails, они позволяют разрабатывать на основе тестирования.
Maven (http://maven.apache.org/what-is-maven.html ) — это скорее метапрограмма, которая может использовать ant-скрипты и запускать ваши тесты JUnit. Правда, ant также можно использовать для запуска тестов JUnit, но Maven отлично справляется со всем этим вместе, а также предоставляет дополнительные функциональные возможности (например: возможность автоматического поиска внешних зависимостей и их загрузки).
Хотя я не знаком с TeamCity, я был бы удивлен, если бы у него не было способа интеграции с ant / maven / junit.
Удачи!
Комментарии:
1. Спасибо за ваш отзыв. Я решил проблему, как я уже описал выше: используя maven для управления процессом сборки и тестирования и используя TeamCity для непрерывной интеграции.