عندما يكون لديك شاشات داخل تطبيق Android الخاص بك تحتوي على ميزات الكاميرا و / أو المعرض مع بعض التغييرات في الشاشة (طرق العرض ، أو التسميات أو الأزرار التي تظهر / تختفي ، وما إلى ذلك) وتحتاج إلى كتابة بعض اختبارات Espresso لتلك الميزات / الشاشات ، فهناك زوجان من المساعدين الذين كنت أستخدمهم وأريد مشاركتهم جميعًا منح الأذونات عندما تستخدم الكاميرا داخل تطبيقك ، فأنت بحاجة إلى منح بعض الأذونات في الجهاز لقراءة / تخزين صورة. يتم طلب هذه الأذونات في وقت التشغيل وعادة ما تكون مرتبطة بـ READ_EXTERNAL_STORAGE و WRITE_EXTERNAL_STORAGE.
وبالتالي ، تسمح قاعدة GrantPermissionRule بمنح أذونات وقت التشغيل على Android M (API 23) وما فوق ، وعند تطبيقها على فئة اختبار ، تحاول هذه القاعدة منح جميع أذونات وقت التشغيل المطلوبة. @ get: Rulevar mRuntimePermissionRule = GrantPermissionRule.grant (android.
Manifest.permission.WRITE_EXTERNAL_STORAGE) عادةً ما تُستخدم هذه القاعدة لمنح أذونات وقت التشغيل لتجنب ظهور مربع حوار الإذن وحظر واجهة مستخدم التطبيقات ، ووفقًا للوثائق الرسمية: وفقًا لهذه القاعدة ، سيتم منح READ_EXTERNAL_STORAGE تلقائيًا عند طلب WRITE_EXTERNAL_STORAGE اختبار عند النقر فوق رمز معرض في التطبيق ، ثم يتم اختيار صورة وعرضها على الشاشة: أول شيء هنا هو أن لدي طريقة مساعدة (CameraAndGallery.
savePickedImage) الذي يحفظ أولاً صورة (للإيجاز أيقونة ic_launcher) التي سيتم استخدامها في الاختبار كملف محلي مرئي للاختبار: تأتي معلمة النشاط من ActivityTestRule:get: Rulevar mActivityTestRule = IntentsTestRule (MyActivity: : class.
النشاط) القصد (hasAction (Intent.ACTION_CHOOSER)). رد باستخدام (imgGalleryResult) السر هنا هو طلب الملف المحفوظ مسبقًا واستخدامه في النهاية كنتيجة.
ملاحظة: للعمل مع نوايا الإسبريسو ، يجب علينا إضافة هذه التبعية لبناء التطبيقات. ملف gradle: androidTestImplementation androidx.test.
espresso: espresso-intents: $ espressoVersion للاختبار الذي نكتبه ، دعنا نفترض أن الصورة المختارة من المعرض ، نقوم بإعدادها في ImageView المرئي للمستخدم ، ثم الجزء الأخير من الاختبار هو التحقق من أن يتم عرض الصورة (الطريقة hasImageSet ()): onView (withId (R.id.auctionphotos_bigimage_viewer)).
تحقق (تطابق (hasImageSet ())) اختبار الكاميرا: على غرار Gallery Test ، فإن الاختبار للحصول على صورة من الجهاز تتبع الكاميرا نفس الخطوات تقريبًا ، ولكن في هذه الحالة لا يلزم حفظ الصورة من قبل ، فقط اسخر من نتيجة الكاميرا: نتيجة الالتقاط السخرية على النحو التالي: سيتم التقاط الصورة الناتجة حسب القصد: النية (hasAction (MediaStore. ACTION_IMAGE_CAPTURE)). رد باستخدام (imgCaptureResult) وبهذا يمكننا التحقق مما إذا تم التقاط الصورة وعرضها: onView (withId (R.
id.auctionphotos_bigimage_viewer)). تحقق من (التطابقات (hasImageSet ())) أخيرًا ، إذا كنت ترغب في استكشاف المزيد من المحتوى المتعلق باختبارات Espresso و Intents ، فقد ترغب في إلقاء نظرة على هذا الريبو من فريق Android الرسمي
شنتشن TigerWong التكنولوجيا المحدودة
الهاتف:86 13717037584
البريد الإلكتروني: info@sztigerwong.com
إضافة: الطابق الأول، المبنى A2، مجمع Silicon Valley Power Digital Industrial Park، رقم. 22 طريق دافو، شارع جوانلان، منطقة لونغهوا،
شنتشن، مقاطعة قوانغدونغ، الصين