号称"Selenium for Android"的Robotium。
robotium牛就牛在它对android的自动化测试可以说是“黑白通吃”,它其实是对android自带测试类Instrumentation的一个封装,方便于测试人员直接调用封装好的接口。可以这样理解,robotium就好比一个富二代,而instrumentation就是他爹,凭着它爹在android家族的势力,robotium可以横冲直撞,黑白通吃。
如果你能够拿到代码,你可以直接进行白盒测试,比如assert一下当前的activity,操作的结果对不对等等,都可以验证。
如果你拿不到代码,只有一个APK,也没关系,你一样可以打到程序内部测试一番,比如这时你可以借助界面上各个控件的index来获得这个控件,并进行相关的操作。
小技巧:
1. 有时text view或者button的click方法会失效,咋办?答案是在被测程序的AndroidManifest.xml文件里加上这么一句:<supports-screens android:anyDensity="true"/>就行了。
android:anyDensity对于支持 Android 1.6 (API 级别 4)以上版本的应用程序而言,本属性的默认值是“true”。 除非确实确认程序必须要能运行,否则请勿设为“false”。 只有当应用程序要直接操作位图时(详情参阅文档 支持多种屏幕),才可能需要禁用此属性。
2. 如果要想在robotium的测试程序里读写SD card肿么办?答案是在被测程序的AndroidManifest.xml文件里加上<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>。注意是在被测程序里加上,在测试程序本身的manifest文件里加会很坑爹的。
3. 还想在Java程序里加点脚本的特性肿么办?俺在网上找到一个好东东:beanshell,这个工具是free的使JAVA可以具备脚本特性的东东,比如你想使用eval,用它很方便,效果你懂得。。。使用前只需将beanshell的JAR导入到项目中即可。