作为小白被拉来做安卓的自动化测试,就自己写下一些过程吧,留着自己以后用,大家也可以一起交流~
在只有一个apk文件的时候,使用robotium进行黑盒测试的大概步骤和流程:
这里安装环境什么的就先略过了,详细的可以参考http://www.yiceyun.com/download/RobotiumDocument.pdf 也可以自行去谷歌^_^
1.被测apk重签名
a.可以用C:\Users\Administrator\.android下的debug.keystore,也可以自己生成一个keystore文件。
b.签名的时候有警告:说没有时间戳,将在XXXX时间失效。没影响,可以不理。
c.重签名
1)去签名:将apk文件改为zip格式,用压缩软件打开,删掉其中META-INF文件夹,关闭,改回apk后缀名,删除签名完成。
2)跳到java-》jdk-》bin下(jarsigner.exe在的目录),然后命令行输入命令
> jarsigner -keystoreC:\Users\Administrator\.android\debug.keystore -storepass android -keypass androidD:\apktest\AndroidCalculator-V1_0.apk androiddebugkey
> zipalign 4D:\apktest\AndroidCalculator-unsign.apkD:\Android\apk\02-AndroidCalculator-sign.apk
上面黄色高亮部分为keystore文件(也可以自己定义,如何定义谷歌吧~)位置,灰色高亮为删除签名之后的apk文件,绿色高亮为重签名后的apk位置。
对于jdk 1.7及以上版本,签名稍有区别,需要加上参数:-digestalg SHA1 -sigalg MD5withRSA,不然可能安装不上,会提示签名失败,例如
> jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore C:\Users\Administrator\.android\debug.keystore -storepass android -keypass android D:\apktest\AndroidCalculator-V1_0.apk androiddebugkey
> zipalign 4 D:\apktest\AndroidCalculator-unsign.apk D:\Android\apk\02-AndroidCalculator-sign.apk
3)这个时候就可以在真机上安装重签名之后的XXXX-sign.apk了。可以adb install命令。
2.创建Test Project
a.eclipse中,File-》new-》Other project-》Android Test Project,取好名字,如果只有apk包的情况下选择This Project,然后选择Android api版本。
b.创建一个新的包,比如com.testXXX
3.创建Test Class
a.选择JUnit3或4,想放在的package名字,以及Junittest case名字,比如TestApk
4.Test Class 编程
最重要的一步…编写测试,这个主要是solo中的方法调用,这里可能要用到R.id的一些东西,可以用Hierarchy Viewer工具查看UI的布局和id,但好像真机Hierarchy Viewer会识别不了,要修改View Server,这个下篇文章里说。
5.添加robotium jar包
大概就是右键->import额外的jar包,找到相应的目录即可~
这个谷歌之,如果导入失败的话,会遇到不能解析Solo类等问题,导入成功即可。
6.修改AndroifManifest.xml
1)主要修改instrumentation中的targetPackage为你要测试的apk的主包名
7.运行test
1)模拟器:右击项目名,选择RunAs AndroidUnit test
2)真机:
a.将测试项目产生的apk重新签名,与之前被测apk一样,参见第一步的c,注意:用同一个key签名,比如都用debug.keystore
b.安装重签名后的测试项目apk
c.运行测试用例
命令:adb shell am instrument -wcom.testcalculator/android.test.InstrumentationTestRunner
此时已经差不多成功了,如果能在真机上看到自己在test case中定义的那些操作,就是成功了~
这篇文章里写的比较简略,之前也说了就是大体的过程,细节参考: