2015-06-26 11 views
3

Я изучаю это несколько дней и выкопал некоторые полезные ресурсы, такие как this user guide. Я также могу построить и установить только отлично благодаря this article. Тем не менее, я не могу, по жизни, выяснить, как запускать свои контрольно-измерительные тесты, не имея подключенного устройства.Тестирование командной строки Android с помощью Gradle

Невозможно выполнить тесты под app/src/androidTest (где у меня есть большинство моих тестов) без использования команды ./gradlew connectedAndroidTest?

Кроме того, я видел это recommended ставить JUnit тесты под app/src/test и приборостроение испытания под Gradle предварительно сконфигурирован app/src/androidTest. Это хороший способ настроить тесты приложения, хотя это означает создание двух разных тестовых каталогов?

Я прошу все это, потому что я использую работу Jenkins CI для создания проекта Android при обновлении кода, и я хотел бы, чтобы Дженкинс выполнил все мои тесты вместе со строительством проекта, но я Надеюсь, мне не пришлось бы заботиться о создании своего рода эмулятора/устройства для Дженкинса для проведения тестов (как требуется ./gradlew connectedAndroidTest).

ответ

2

Да, это правильный способ настроить тест приложения как тесты JUnit (в приложении/src/test), запускаемые на JVM и контрольно-измерительных тестах, запущенных на подключенном устройстве.

http://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html

Возможное решение - В предварительных сборках на этапе Дженкинс, запустить эмулятор/Genymotion из командной строки и запустить все тесты с

./gradlew cAT 

ИЛИ сохранить настройки Genymotion/эмулятор работает всегда. https://www.genymotion.com/#!/

0

Для тех, кто нашел эту тему, как я, и думаю о запуске Android с терминала, возможно, в CI.

В последнее время я работаю с CI на GitLab. Я выяснил лучший способ без gennymotion, с простым андроидом avd, созданным avdmanager. Новые Android-инструменты оптимизированы для работы с терминалом, которые могут использоваться, например, в изображениях докеров.

Подробнее об этом tutorial и обновите скрипт gitlab, как показано ниже.


image: openjdk:8-jdk 



variables: # such as .. 
    ANDROID_SDK_TOOLS_URL: "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" # https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip 
    ANDROID_SDK_VERSION: "26"  # 26 
    ANDROID_BUILD_TOOLS: "26.0.2"  # 26.0.1 


before_script: 
    - apt-get --quiet update --yes 
    - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 
    - wget --quiet --output-document=android-tools.zip ${ANDROID_SDK_TOOLS_URL} 
    - unzip android-tools.zip -d android-sdk-linux 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" --verbose # SDK Platform-Tools 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_SDK_VERSION}" --verbose # SDK Platform 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" --verbose # SDK Build-Tools 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "extras;android;m2repository" --verbose # Support Repository 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;m2repository" --verbose # Google Repository 
    - echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;google_play_services" --verbose # Google Play services 
    - export ANDROID_HOME=$PWD/android-sdk-linux 
    - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ 
    - chmod +x ./gradlew 

stages: 
    - build 
    - test 

build: 
    stage: build 
    script: 
    - ./gradlew assembleDebug 
    artifacts: 
    paths: 
    - app/build/outputs/ 

unitTests: 
    stage: test 
    script: 
    - ./gradlew test 

functionalTests: 
    stage: test 
    script: 
    - wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator 
    - chmod +x android-wait-for-emulator 
    - echo y | android-sdk-linux/tools/bin/sdkmanager --verbose --update 
    - echo y | android-sdk-linux/tools/bin/sdkmanager --verbose "system-images;android-${ANDROID_SDK_VERSION};google_apis;x86" 
    - echo no | android-sdk-linux/tools/bin/avdmanager create avd -n test -k "system-images;android-${ANDROID_SDK_VERSION};google_apis;x86" # no custom HW profile 
    - android-sdk-linux/tools/emulator -avd test -no-window -no-audio & # run headless "test" AVD 
    - ./android-wait-for-emulator # if ran fast enough it will catch cange of state on Boot Animation ~ init.svc.bootanim 
    - adb shell input keyevent 82 # some dummy input 
    - ./gradlew cAT