Espresso Espresso 之编译、运行 sample

summer · 2013年11月09日 · 最后由 思寒_seveniruby 回复于 2013年11月10日 · 2682 次阅读
本帖已被设为精华帖!

首先装好你的 android 开发环境,安装好 JDK(1.7)、maven(3.0.5)并配置好环境变量。至于这俩货我为什么一定要标上使用的版本就不多说了,说多了都是泪……
1.去https://github.com/mosabua/maven-android-sdk-deployer
下载 maven-android-sdk-deployer,运行命令

cd ~/maven-android-sdk-deployer
mvn clean install -P 4.2

如果一切顺利,你可以看到最后的结果如图:

当然一般情况下,道路都是曲折的……你可能会碰到如下问题:

解决办法:
进入 maven 的本地仓库

cd ~/.m2/repository/android/support/compatibility-v7-appcompat

会看到一个 19.0.0 的文件夹,将此文件夹名字改为 “19”,再将文件夹里面所有文件中的 “19.0.0” 字串修改成 “19”
还有可能会碰到这个:

解决办法:
进入你的 android sdk

cd ~/android-sdk-linux_x86/extras/google/play_licensing

打开 source.properties,将倒数第 2 行
Pkg.Revision=2
修改为
Pkg.Revision=2.0.0
2.去https://code.google.com/p/android-test-kit/
下载 Espresso,将手机连接到 PC,运行命令:

cd ~/android-test-kit
mvn clean install

如果一切顺利,最后将会看到这样:

谁都希望一路顺畅,但是……你懂的
可能遇到这个:

解决办法:
进入 maven 的本地仓库:

cd ~/.m2/repository/android/support/compatibility-v4

将里面的 19.0.0 文件夹复制一份,将此文件夹名字改为 “18”,再将文件夹里面所有文件中的 “19.0.0” 字串修改成 “18”
再进入另一个文件夹:

cd ~/.m2/repository/android/support/compatibility-v7-appcompat

将这里的 19.0.0 文件夹如法炮制
备注:
可能有的朋友这里没有什么 “19.0.0” 的文件夹,而是什么 11、13 这样的文件夹,简单说一下这里的 11、13、19(或者是 19.0.0)其实是你的 android sdk 里面 Android Support Library 的版本号,如图:

再回头去看我们出现错误的原因:

可以看到它需要一个 jar 包版本号是 18 的,但是我们 maven 本地仓库里没有,怎么办?那就手动造一个给它。(19 改 18 没问题,13 改 18 会不会有问题,我不知道)
可能遇到这个:

这个显然是没连接手机
可能遇到这个:

这里可以看到是 Espresso 自带的测试脚本抛了一条异常,导致测试失败。目前还不知道是因为我手机问题还是脚本问题,如果对此有研究的大侠可以指点一下。到了这一步已经涉及到了具体的测试了。反正我只是为了编译工具包,测试脚本失败也没关系,看不惯可以到~/android-test-kit/espresso/libtests/src/main/java/com/google/android/apps/common/testing/ui/espresso 将有问题的脚本先删掉,然后再编译。
到了这里需要编译的工具 jar 包已经编译完了,编译出来的 jar 包或者 apk 在各个目录的 target 文件夹下。比如~/android-test-kit/espresso/lib/target 下就有一个 espresso-1.0-SNAPSHOT-bundled.jar,这个就是 Espresso 这个框架的主 jar 包了。
最后顺便说一下怎么运行 Espresso 自带的 sample。将整个 Espresso 编译一遍后,可以单独进入 libtests,运行命令就能单独跑 sample 了

cd ~/android-test-kit/espresso/libtests
mvn clean install

其实上面已经说了,脚本一共 165 条 case,但是跑起来有很多问题,抛异常啦,报错啦。所以对 sample 的脚本有研究的大侠,求交流~~

共收到 3 条回复 时间 点赞

赞, 写的很详细..
看来这一路都是各种坑啊. espresso 也是我的下一步的研究目标.

安装这么多的版本的 sdk 貌似也没必要, 可以从配置文件中删除不必要的依赖.

对于 android 下的 uiautomator, instrumention 和 espresso, 这三者底层到底用的是什么技术, 我还没完全搞清楚.
我还在一点点的阅读 android 的代码,

android 最近 sdk 升级的我有点莫名其妙了。。依赖关系太混乱了。不要说 espresso 了,基本的 sdk 环境我都碰见很多坑。。。

这方面行业也是刚起步 我都想搞个脚本去检测各种环境是否符合要求了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册