當您的Android應用程序中的屏幕具有相機和/或圖庫功能以及某些屏幕更改 (出現/消失的視圖,標籤或按鈕) 時,等等),你需要為這些功能/屏幕寫一些濃縮咖啡測試,有幾個我一直在使用的助手,我想和大家分享。 授予許可當你在你的應用程序中使用相機時,您需要在設備中授予一些權限才能讀取/存儲照片。 這些權限在運行時被要求,通常與READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE相關。
因此,GrantPermissionRule允許在Android M (API 23) 及更高版本上授予運行時權限,並且當應用於測試類時,該規則嘗試授予所有請求的運行時權限。 @ Get:Rulevar mRuntimePermissionRule = GrantPermissionRule.grant(android
Manifest.permission.WRITE_EXTERNAL_STORAGE) 此規則通常用於授予運行時權限,以避免權限對話框顯示並阻止應用程序Ui,並且根據官方文檔: 根據此規則,當WRITE_EXTERNAL_STORAGE被請求時,將自動授予READ_EXTERNAL_STORAGE。 測試代碼在應用程序中單擊圖庫圖標時進行測試,然後選擇圖像並在屏幕上顯示: 這裡的第一件事是我有一個幫助方法 (CameraAndGallery。
SavePickedImage),首先保存一個圖像 (為了簡潔,ic_launcher圖標),該圖像將在測試中用作測試可見的本地文件: 活動參數來自ActivityTestRule:@ get:Rulevar mActivityTestRule = IntentsTestRule(MyActivity::class.java),然後我創建一個ActivityResult對象 (就像一個模擬但用於android意圖),該對象將由濃縮咖啡意圖匹配器使用 (以匹配和驗證傳出的意圖):val imgGalleryResult = CameraAndGallery.createImageGallerySetResultStub(mActivityTestRule
活動) 意圖 (hasAction(Intent.ACTION_CHOOSER)).Respondwing (imgGalleryResult) 這裡的秘密是要求先前保存並最終用作結果的文件。
注意: 要使用濃縮咖啡意圖,我們必須將此依賴項添加到應用程序構建中。 Gradle文件: androidTestImplementation androidx.test.
Espresso:espresso-意圖: $ espresssoversion對於我們正在編寫的測試,讓我們假設從圖庫中提取的圖像,我們將其設置在用戶可見的ImageView中,然後測試的最後一部分是檢查圖像是否顯示 (方法hasImageSet()):onView (與id (R.id.auctionphotos_bigimage_viewer))。
檢查 (匹配 (hasImageSet() 相機測試與圖庫測試類似,從設備相機獲取圖像的測試遵循幾乎相同的步驟,但在這種情況下,圖像不需要之前保存,只需模擬相機的結果: 模擬捕獲結果如下: 生成的圖像將由意圖拍攝: 意圖 (hasAction(MediaStore。 ACTION_IMAGE_CAPTURE)). 響應 (imgCaptureResult),並且我們可以檢查圖像是否已拍攝並顯示: onView(withId(R。
Id.auctionphotos_bigimage_viewer))。 檢查 (匹配 (hasImageSet() 最後,如果你想探索更多關於濃縮咖啡測試和意圖的內容,你可能想看看這個官方安卓團隊的回購