測試用例中需要讀寫SD卡中文件,一直報FileNotFoundException
因為我測試的應用接口,需要讀取SD卡文件,反復確認文件存在且名稱正確
image.png
但運行總是報文件不存在,我想到了權限問題,于是在AndroidManifest.xml中添加了權限

image.png
運行依然報錯,然后我想到普通android應用,這些權限都是需要用戶手動授權的,但做自動化測試的時候手動授權太不方便了,終于查到了自動測試過程中自動授權方法,于是在測試用例類中添加如下

image.png
問題解決終于可以讀取本地文件了
如何在Activity運行的基礎上啟動測試
因我是做sdk接口自動化,sdk是基于頁面的一個surfaceview處理的一系列接口,所以必須要先添加UI界面,將sdk中的surfaceview綁定到應用界面后才能測試,可使用ActivityTestRule 這個規(guī)則,如下代碼,這個MainActivity會在測試啟動前啟動,測試結果后銷毀

image.png
Android測試用例運行
./gradlew connectAndroidTest 也可縮寫 ./gradlew cAT
好處:可自動更新代碼運行,并生成測試報告 在build/report目錄下
壞處:每次運行完都會卸載測試應用,國產(chǎn)手機因為一些系統(tǒng)禁止測試應用自啟動,每次需求設置白名單才可運行成功,但是卸載的話每次都要設置白名單,不利于自動化集成
如果想要不卸載直接執(zhí)行,可使用adb指令
adb shell am instrument -w package/runner
這樣只要設置一次白名單以后都可自動執(zhí)行了,但是這樣做又不能生成測試報告,真是個郁悶的結果?。?/p>