通过上一篇“win7下安装calabash android并成功运行”我们看到环境已经搭建好了并且能成功运行官方给的测试APK,但在我们实际测试中APK不可能那么简单,各公司也有自己的签名方式。
一、给测试APK签名
calabash-android setup 更换掉keystore路径,密码及依赖等,按照提示依次输入相关信息
修改完成后,你可以进入.calabash_settings查看是否设置成功,这一步完成后,我们正式给APK签名。calabash-android resign testapk
我们看到有警告提示,JKS密钥存储使用专有格式,建议迁移到PKCS。这句话就是说我们需要将JKS(.jks)密钥库转换为PKCS#12(.p12)格式。输入警告中的提示:keytool -importkeystore -srckeystore C:/Users/Administrator/.android/debug.keystore -destkeystore C:/Users/Administrator/.android/debug.keystore -deststoretype pkcs12
我们输入正确的源秘钥库口令,即可将JKS格式转换成PKCS12格式(我自己的口令为android)
进行到这一步之后,我们再次对测试APK重新签名,没有任何提示即为签名成功
二、创建测试服务APK
test server apk在run脚本的时候会被安装到设备中,使用calabash-android build testapk创建(这个apk在运行测试时会被安装到设备中去。它基于android sdk里的ActivityInstrumentationTestCase2,是calabash android框架的一部分,Robotium就集成在这个应用里)
三、运行测试APK
calabash-android run testapk,这个我们采用系统应用,比如桌面来执行(calabash每次执行feature时会卸载重新,对于第三方应用来说没啥好说的,本来就是可以自由安装卸载的,但对于系统应用来说它存在一个不可卸载的问题,我们怎么让他不卸载就可以执行我们写好的脚本呢?)
可以看到,命令提示我们这个包不可以卸载,为了不卸载应用的情况下我们就能运行测试脚本,我们需要到feature文件夹下的support修改app_installation_hooks.rb文件,注释掉安装apk的那行代码,这样做后test server apk不会自动安装到设备中,那怎么办呢?自动化测试怎么会用这么傻X的方法呢,so我们加上一行安装test server apk的代码即可:reinstall_test_server
修改代码18&19行,接下来我们继续运行我们的脚本,查看下效果:calabash-android run testapk -f html -o report.html
因为我脚本没有写好所以报错啦,但是这都不是重点,脚本写起来很简单,先能运行起来跑起来才是王道!!
网友评论