Android アプリ内にカメラやギャラリー機能があり、画面の変更 (ビュー、ラベル、ボタンの表示/非表示など) があり、これらの機能/画面用の Espresso テストを作成する必要がある場合は、いくつかの方法があります。アクセス許可の付与アプリ内でカメラを使用している場合、写真を読み取り/保存するには、デバイスにいくつかのアクセス許可を付与する必要があります。 これらのアクセス許可は実行時に要求され、通常は READ_EXTERNAL_STORAGE および WRITE_EXTERNAL_STORAGE に関連しています。
したがって、GrantPermissionRule を使用すると、Android M (API 23) 以降でランタイム パーミッションを付与できます。テスト クラスに適用すると、このルールは要求されたすべてのランタイム パーミッションを付与しようとします。
Manifest.permission.WRITE_EXTERNAL_STORAGE) このルールは、通常、パーミッション ダイアログが表示されてアプリの Ui がブロックされるのを回避するために、実行時のパーミッションを付与するために使用されます。アプリでギャラリー アイコンがクリックされると、画像が選択されて画面に表示されることをテストします。最初に、ヘルパー メソッド (CameraAndGallery.
savePickedImage) は、最初に、テストで表示されるローカル ファイルとしてテストで使用されるイメージ (簡潔にするために ic_launcher アイコン) を保存します。アクティビティ パラメーターは、ActivityTestRule:@get:Rulevar mActivityTestRule = IntentsTestRule(MyActivity: :class.java)次に、Espresso Intents マッチャーで使用される ActivityResult オブジェクト (モックのようなものですが、Android Intent 用) を作成します (発信インテントを照合して検証するため):val imgGalleryResult = CameraAndGallery.createImageGallerySetResultStub(mActivityTestRule.
アクティビティ)意図(hasAction(Intent.ACTION_CHOOSER)).respondWith(imgGalleryResult)ここでの秘密は、以前に保存して最終的に結果として使用したファイルを要求することです。
注: Espresso インテントを操作するには、この依存関係をアプリのビルドに追加する必要があります。 gradle ファイル:androidTestImplementation androidx.test.
espresso:espresso-intents:$espressoVersion 作成中のテストでは、ギャラリーから画像を選択し、それをユーザーに表示される ImageView に設定すると仮定します。テストの最後の部分は、画像が表示されます (メソッド hasImageSet()):onView(withId(R.id.auctionphotos_bigimage_viewer))。
check(matches(hasImageSet()))Camera TestGallery Test と同様に、デバイス Camera から画像を取得するテストはほぼ同じ手順に従いますが、この場合、画像を事前に保存する必要はなく、次の結果をモックするだけです。カメラ:次のようなモック キャプチャ結果:結果の画像はインテントによって取得されます:intending(hasAction(MediaStore. ACTION_IMAGE_CAPTURE)). RespondWith(imgCaptureResult)これで、画像が撮影されて表示されたかどうかを確認できます:onView(withId(R.
id.auctionphotos_bigimage_viewer)).check(matches(hasImageSet()))最後に、Espresso のテストとインテントに関する内容をもう少し調べたい場合は、公式の Android チームからのこのリポジトリを参照してください。
深センTigerWongテクノロジー株式会社
電話:86 13717037584
メール: info@sztigerwong.com
住所: シリコン バレー パワー デジタル工業団地、ビル A2、1 階、No. 龍華区観蘭街大福路22号
中国広東省深セン