connectedAndroidTest как запускать определенные тесты

Я QA в начинающей компании. Моя настройка разработчика Инструментальные тесты в проекте Android. Он также настроил Jenkins Jobs для запуска этих тестов в среде CI.

Это команда, указанная в поле «Задачи» в задании Дженкинса в разделе «Сборка» -> «Вызвать скрипт Gradle». чистая сборкаОтладка подключенаAndroidTest testDebug

Я хотел бы создать свою собственную работу Jenkins для запуска различных типов тестов. Есть ли способ, которым я могу отфильтровать свои тесты, просто выполнив команду «connectedAndroidTest»? Я попытался использовать сценарий оболочки, как показано ниже, но это не сработало. adb shell am инструмент -w /

Я получаю следующее сообщение об ошибке: [Execute Smoke Test Suite] $ /bin/bash -xe /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh + adb shell am tools -w ' ' class com.draysonwireless.airmapandroid .rewards/BonusTest.java /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh: строка 2: adb: команда не найдена Шаг сборки «Выполнить оболочку» помечен как сбой Завершено: ОШИБКА


person jellyBeans    schedule 18.04.2016    source источник
comment
Ваш вопрос недостаточно ясен. Казалось бы, ваше техническое понимание ограничивает вас в понимании причины проблемы. Я бы посоветовал просмотреть несколько руководств, а затем вернуться сюда с более конкретным вопросом.   -  person Alex.F    schedule 18.04.2016
comment
@ Alex.F Извините, я согласен, что вопрос немного двусмысленный. По сути, я ищу способ запускать только определенные тесты в заданиях Дженкинса. Если бы я использовал сборки Maven, я бы знал, что есть способ запустить определенные тесты с использованием тегов (аннотаций). Есть ли аналогичный способ для сборок Gradle?   -  person jellyBeans    schedule 19.04.2016


Ответы (2)


Кажется, что ваш пользователь jenkins не может видеть android adb, поэтому сборка завершается неудачно. Добавьте adb в системный путь или укажите его точное местоположение.

Что касается запуска конкретных тестов с помощью команды gradle, ниже приведен пример:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName

Взято из здесь с моей небольшой модификацией. Ваша команда connectedAndroidtest может варьироваться в зависимости от наличия тестового варианта.

person denys    schedule 19.04.2016
comment
Спасибо отрицает. Я получаю следующую ошибку com.android.builder.testing.ConnectedDevice › Тесты не найдены. [Google Nexus 5 - 5.1.0 - API 22 - 1080x1920 - 5.1] FAILED Тесты не найдены. Обычно это означает, что ваши тестовые классы не в той форме, которую ожидает ваш тестировщик (например, не наследуются от TestCase или не имеют аннотаций @Test). :приложение:connectedDebugAndroidTest - person jellyBeans; 20.04.2016
comment
@jellyBeans проверяет имя пакета, например com.android.builder.testing. Это должен быть один из пакетов, которые вы получите после запуска этой команды adb shell pm list instrumentation. - person denys; 20.04.2016
comment
Я думаю, эта ошибка была связана с эмулятором. Когда я использую другой эмулятор, я больше не вижу эту ошибку. Но есть еще одно исключение, которое возникает INSTRUMENTATION_STATUS: Error=Невозможно найти информацию об инструментировании для: ComponentInfo{com.company.project.SignUpScreeTest/android.support.test.runner.AndroidJUnitRunner} - person jellyBeans; 20.04.2016
comment
Это то, что у меня есть в моем файле build.gradle testInstrumentationRunner android.support.test.runner.AndroidJUnitRunner - person jellyBeans; 20.04.2016
comment
Разве это не должно быть com.company.project.test. Проверьте инструментированный пакет после запуска этой команды adb shell pm list instrumentation и скопируйте его в команду задачи gradle. - person denys; 20.04.2016
comment
Я не уверен, нужно ли мне создавать тестовый пакет в com.company.project. Когда я запускаю SignUpTest вручную из среды IDE, команда, которую он подбирает, выглядит следующим образом, и тест выполняется успешно: .project.debug.test/android.support.test.runner.AndroidJUnitRunner - person jellyBeans; 20.04.2016
comment
ты прав. Я попытался запустить тест, создав тестовый пакет в com.company.project, и тест прошел нормально :) Большое спасибо за помощь. - person jellyBeans; 21.04.2016
comment
Рад, что смог тебе помочь. Было бы неплохо, если бы вы приняли мой ответ как правильный. - person denys; 21.04.2016
comment
Ссылка на googlesamples GitHub устарела. Это больше не документированный способ запуска конкретных тестов. Можете ли вы обновить свой ответ, чтобы объяснить используемые параметры? В частности, что такое -P? - person Code-Apprentice; 28.08.2018
comment
Хм. Что устарело, человек? Я даже не упомянул об этом, но попробуйте доказать мне, что это не один из задокументированных способов запуска тестов. Или ссылка не открывает официальный проект googlesamples github?! И, наконец, постарайтесь потратить некоторое время и изучить, что означает -P. О, подождите, возможно, это пользовательский аргумент или параметр, как указано на связанной странице...! - person denys; 06.09.2018

Это сценарий оболочки, который я использовал в своей работе с Дженкинсом:

export PATH=$PATH:/Users/Shared/Jenkins/Library/Android/sdk/platform-tools
adb shell am instrument -w -r   -e debug false -e class com.company.project.test.SmokeTest com.company.project.debug.test/android.support.test.runner.AndroidJUnitRunner

Структура папок должна быть следующей: app --> src --> androidTest --> java --> com.company.project --> test --> TestClass.

person jellyBeans    schedule 21.04.2016