Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Gradle进行Android命令行测试_Android_Unit Testing_Jenkins_Android Gradle Plugin - Fatal编程技术网

用Gradle进行Android命令行测试

用Gradle进行Android命令行测试,android,unit-testing,jenkins,android-gradle-plugin,Android,Unit Testing,Jenkins,Android Gradle Plugin,我已经研究了好几天了,找到了一些很好的资源,比如。我也可以建立和安装刚刚好感谢。然而,在我的一生中,我无法弄清楚如何在没有连接设备的情况下运行仪器测试 如果不使用命令/gradlew connectedAndroidTest,是否无法在app/src/androidTest下运行测试 此外,我还看到了将jUnit测试放在app/src/test下,将插装测试放在gradle预配置app/src/androidTest下。即使这意味着创建两个不同的测试目录,这也是设置应用程序测试的好方法吗 我问所

我已经研究了好几天了,找到了一些很好的资源,比如。我也可以建立和安装刚刚好感谢。然而,在我的一生中,我无法弄清楚如何在没有连接设备的情况下运行仪器测试

如果不使用命令
/gradlew connectedAndroidTest
,是否无法在
app/src/androidTest
下运行测试

此外,我还看到了将jUnit测试放在
app/src/test
下,将插装测试放在gradle预配置
app/src/androidTest
下。即使这意味着创建两个不同的测试目录,这也是设置应用程序测试的好方法吗


我问所有这些是因为我正在使用Jenkins CI作业在更新代码的基础上构建Android项目,我希望Jenkins在构建项目的同时运行我的所有测试,但我希望我不必担心为Jenkins创建某种模拟器/设备来运行测试(根据
/gradlew connectedAndroidTest
)的要求。

是的,将应用程序的测试设置为在JVM上运行的JUnit测试(in-app/src/test)和在连接设备上运行的插装测试是正确的方法

可能的解决方案-在Jenkins上的预构建步骤中,从命令行运行emulator/Genymotion,并使用

./gradlew cAT
或者让Genymotion/emulator设置始终运行。

对于那些发现这个话题和我一样,并且正在考虑从终端(可能是在CI中)运行Android的人

我最近一直在GitLab上与CI合作。我找到了一种不用gennymotion的更好方法,只使用avdmanager创建的android avd。新的android工具经过优化,可以从终端运行,例如可以在docker图像中使用

本文提供了更多信息,并更新gitlab compose脚本,如下所示


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