在运行android espresso测试时给jenkins带来错误。 我的服务器是无头linux aws,我使用xvfb虚拟运行android模拟器,并希望运行测试用例。 我已经用命令行
创建了模拟器android create avd --force -n nexus4-emulator2 -t "Google Inc.:Google APIs:18" --abi default/armeabi-v7a -s "768x1280" --device "Nexus 4" -c 128M
这是创建模拟器,首先它给出了权限错误,但在添加访问权限后,它会得到解决。
现在jenkins上的一些日志就像下面的
[android]启动Android模拟器
$ / opt / android-sdk-linux // platform-tools / adb -s emulator-5788 wait-for-device shell getprop init.svc.bootanim [android]模拟器 据报道,启动过程正在运行
[android]试图解锁仿真器屏幕
:Chynge:preBuild UP-TO-DATE
安装APK' app-debug.apk' on' nexus4-emulator(AVD) - 4.3.1'对于 Chynge:debug安装在1台设备上。
:应用程序:connectedDebugAndroidTest
com.app_positive.LoginTest> loginTest [nexus4-emulator(AVD) - 4.3.1] [31mFAILED [0m android.support.test.espresso.NoMatchingViewException: 层次结构中没有查看匹配的视图:(使用id:com.app:id / btn_login 和文字:是"登录电子邮件"并显示在屏幕上 给用户)
:app:connectedDebugAndroidTest FAILED
- 出了什么问题:任务执行失败':app:connectedDebugAndroidTest'。
测试失败了。请参阅以下报告:file:///data/jenkins/workspace/android-ci-tests/client/android/app/build/reports/androidTests/connected/index.html
[Gradle] - 启动构建。
构建步骤'调用Gradle脚本'将构建结果更改为FAILURE Xvfb 停止完成:失败
答案 0 :(得分:2)
![Emulator Configuration][see here] ![Gradle task configuration][see here]我没有添加命令来创建模拟器或打开它,但Jenkins提供了android模拟器插件,可以完成创建模拟器,等待打开,启动模拟器等所有事情,我只是必须为它添加配置。 最后我得到了答案,我试图在我的Windows机器上创建模拟器,在Jenkins上配置相同,并在其上安装应用程序,它显示谷歌播放服务更新弹出,这就是原因,跑步者无法在屏幕上找到视图,如弹出窗口不允许运行应用程序,创建模拟器的查询就像
路径到android_sdk_tools>> android create avd --force -n emualator_29 -t android-23 --abi google_apis / armeabi-v7a -s“768x1280”--device“Nexus 4”-c 128M
只需采用新版本23,一些理想的屏幕分辨率,还有一个只有armeabi-v7a在无头机上运行......它对我有用..谢谢你......
答案 1 :(得分:1)
我没有使用Jenkins
,但我使用Travis CI
来构建我的Github项目。我知道在安装插件后可以使用Travis
扩展名读取.yml
配置文件。
这是我的Android模拟器配置
- echo no | android create avd --force -n test -t $ANDROID_TARGET --abi armeabi-v7a --sdcard 200M
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- sleep 10
- adb shell settings put global window_animation_scale 0 &
- adb shell settings put global transition_animation_scale 0 &
- adb shell settings put global animator_duration_scale 0 &
- adb shell input keyevent 82 &
来自:https://github.com/piotrek1543/LocalWeather/blob/master/.travis.yml
正如您在创建模拟器实例(第一行)后所看到的那样,我正在执行android-wait-for-emulator
,因为加载虚拟设备可能需要几分钟时间,并且Espresso
测试可能会在模拟器进入woulb之前启动闲。还要记得关闭动画并解锁屏幕(最后一行)。
尝试编写类似的脚本。
编辑:当您使用无头服务器取消选中时此选项:
在无头构建机器上运行
如果你有自己的奴隶 无头(例如没有图形用户的Linux服务器 接口),你仍然可以运行Android模拟器,即使,通过 默认情况下,模拟器确实需要图形环境。
取消勾选你的“显示模拟器窗口”配置选项 工作配置。这相当于使用模拟器 “-no-window”命令行选项。
来自:https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator+Plugin
同样,快照支持并不能完全适用于Android 4.0 直到SDK Tools r15。可以创建初始快照,但是 随后从该快照加载将使模拟器崩溃 立即。早期的Android版本不受影响,即您可以 仍然使用Android 3.2及更早版本的快照。升级到SDK 工具r15 +应该解决这个问题。
作为解决方法,您还可以取消选中任何“使用模拟器快照” 你看到问题的工作。
来自:https://wiki.jenkins-ci.org/display/JENKINS/Android+Emulator+Plugin
该屏幕上描述了相同的解决方案:
来自http://blog.zuehlke.com/en/configure-your-android-project-on-jenkins/
EDIT2 :阅读这篇文章:https://www.cloudbees.com/blog/continuous-integration-mobile-apps-jenkins-android-builds并注意:
请注意,您可以向模拟器中添加一些其他脚本,尝试在没有第一行的情况下使用我的脚本。
希望它会有所帮助