Android 自动化测试踩坑记录(一)

测试用例中需要读写SD卡中文件,一直报FileNotFoundException

因为我测试的应用接口,需要读取SD卡文件,反复确认文件存在且名称正确
image.png

但运行总是报文件不存在,我想到了权限问题,于是在AndroidManifest.xml中添加了权限


image.png

运行依然报错,然后我想到普通android应用,这些权限都是需要用户手动授权的,但做自动化测试的时候手动授权太不方便了,终于查到了自动测试过程中自动授权方法,于是在测试用例类中添加如下


image.png

问题解决终于可以读取本地文件了

如何在Activity运行的基础上启动测试

因我是做sdk接口自动化,sdk是基于页面的一个surfaceview处理的一系列接口,所以必须要先添加UI界面,将sdk中的surfaceview绑定到应用界面后才能测试,可使用ActivityTestRule 这个规则,如下代码,这个MainActivity会在测试启动前启动,测试结果后销毁

image.png

Android测试用例运行

./gradlew connectAndroidTest 也可缩写 ./gradlew cAT

好处:可自动更新代码运行,并生成测试报告 在build/report目录下
坏处:每次运行完都会卸载测试应用,国产手机因为一些系统禁止测试应用自启动,每次需求设置白名单才可运行成功,但是卸载的话每次都要设置白名单,不利于自动化集成

如果想要不卸载直接执行,可使用adb指令
adb shell am instrument -w package/runner
这样只要设置一次白名单以后都可自动执行了,但是这样做又不能生成测试报告,真是个郁闷的结果!!

你可能感兴趣的:(Android 自动化测试踩坑记录(一))