استخدِم Espresso Device API لاختبار تطبيقك عندما يخضع الجهاز لتغييرات برمجية مألوفة، مثل التدوير وفتح الشاشة. تتيح لك واجهة برمجة التطبيقات Espresso Device API محاكاة تغييرات الضبط هذه على جهاز افتراضي، و ejecutang اختباراتك بشكل متزامن، بحيث يتم تنفيذ إجراء واحد فقط أو تأكيد واحد فقط في واجهة المستخدم في الوقت نفسه، وتكون نتائج اختباراتك أكثر موثوقية. إذا كنت حديث العهد بكتابة اختبارات واجهة المستخدم باستخدام Espresso، اطّلِع على مستندات هذه الأداة.
لاستخدام Espresso Device API، تحتاج إلى ما يلي:
- الإصدار Iguana من "استوديو Android" أو إصدار أحدث
- الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android أو إصدار أحدث
- الإصدار 33.1.10 من "محاكي Android" أو إصدار أحدث
- جهاز Android افتراضي يعمل بالمستوى 24 لواجهة برمجة التطبيقات أو إصدار أحدث
إعداد مشروعك لاستخدام Espresso Device API
لإعداد مشروعك كي يتوافق مع Espresso Device API، اتّبِع الخطوات التالية:
للسماح للاختبار بتمرير الأوامر إلى جهاز الاختبار، أضِف إذنَي
INTERNET
وACCESS_NETWORK_STATE
إلى ملف البيان في مجموعة المصادرandroidTest
:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
فعِّل العلامة التجريبية
enableEmulatorControl
في ملفgradle.properties
:android.experimental.androidTest.enableEmulatorControl=true
فعِّل الخيار
emulatorControl
في نص برمجي ملف ترجمة ملف APK على مستوى الوحدة:Kotlin
testOptions { emulatorControl { enable = true } }
رائع
testOptions { emulatorControl { enable = true } }
في نصّ إنشاء مستوى الوحدة، استورِد مكتبة Espresso Device إلى مشروعك:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.1") }
رائع
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.1' }
اختبار التغييرات الشائعة في الإعدادات
تتضمّن Espresso Device API عدة حالات للشاشة وحالات للطي يمكنك استخدامها لمحاكاة تغييرات إعدادات الجهاز.
اختبار التوافق مع تدوير الشاشة
في ما يلي مثال على كيفية اختبار ما يحدث لتطبيقك عند تدوير شاشة الجهاز:
أولاً، لضمان حالة بدء متسقة، اضبط الجهاز على الوضع عمودي:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
أنشئ اختبارًا يضبط الجهاز على الوضع الأفقي أثناء تنفيذ الاختبار:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
بعد تدوير الشاشة، تأكَّد من أنّ واجهة المستخدم تتكيّف مع التنسيق الجديد على النحو المتوقّع.
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
اختبار الشاشة أثناء فتحها
في ما يلي مثال على كيفية اختبار ما يحدث لتطبيقك إذا كان على جهاز folded وفتح الشاشة:
أولاً، عليك إجراء الاختبار عندما يكون الجهاز مطويًا من خلال الاتصال بالرقم
onDevice().setClosedMode()
. تأكَّد من أنّ تنسيق تطبيقك يتلاءم مع عرض الشاشة المكثّف.@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
للانتقال إلى حالة الفتح الكامل، اتصل بالرقم
onDevice().setFlatMode()
. تأكَّد من أنّ تنسيق التطبيق يتكيّف مع فئة الحجم الموسّعة.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
تحديد الأجهزة التي تحتاجها اختباراتك
إذا كنت تُجري اختبارًا ينفِّذ إجراءات طي على جهاز غير قابل للطي، من المرجّح أن يتعذّر اجتياز الاختبار. لتنفيذ الاختبارات ذات الصلة فقط
بالجهاز الذي يتم تشغيله، استخدِم التعليق التوضيحي @RequiresDeviceMode
. يتخطّى مشغّل الاختبار
تلقائيًا إجراء الاختبارات على الأجهزة التي لا تتوافق مع
الإعدادات التي يتم اختبارها. يمكنك إضافة قاعدة متطلبات الجهاز إلى كل اختبار
أو فئة اختبار بأكملها.
على سبيل المثال، لتحديد أنّه يجب عدم تنفيذ اختبار إلا على الأجهزة التي تتيح
فتح التطبيق على شاشة مسطّحة، أضِف الرمز @RequiresDeviceMode
التالي
إلى اختبارك:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}